T2T2’s diary

アウトプット

201013アウトプット 9日目

TECHCAMP9日目

標】

自分のしたいことのために挑戦していることを問い直す。

今までの学習方法を見直す

習事項】

ソシエーションについて

目的 モデル同士を関連づけるための方法

   処理したい情報が増えると複雑化する(モデルが増える)ので、アソシエーションを使用する

方法 モデルに記載する
  ・has manyメソッド (ユーザー→ポスト  一人の投稿者が複数の投稿をする)
  ・belongs_toメソッド(ポスト →ユーザー 一つの投稿は一人がしたもの)

※実際は各々のモデルが、モデルに対して記載するので

 


N+1問題

問題 ループ処理の都度SQLを発行し、パフォーマンスが低下してしまう問題

例え 買い物する際に、1点1点お会計をしてしまうようなことが起きている

何故 一度目にモデルの取得して(+1)、それから各モデルを読み込む(N回)

対応 includesメソッド: 一度のアクセスでまとめて情報を取得できる
             モデル分なので(N回)で済むことができる。

 


稿者本人のみに編集・削除を許可するために

目的 他のユーザーから勝手に編集・削除を防ぐ

   誰彼構わず編集・削除ボタンが表示されている状態だから

方法 if文を使用する                             

   ログイン 且 ログイン中のユーザーID == 投稿したIDが同じか確認する

   同じであれば編集・削除ボタンが表示されるようにする

 


分テンプレート
目的 複数ページで利用する表示の一部をまとめる

   繰り返し使用するコードを再利用して、ページの量を減らす

方法 _○○.html.erbファイル を新規作成して同じページはまとめる


スト(入子構造)の利用
目的 ネスト利用でモデル同士を結びつけ共有しid情報が送りやすくする
   id情報を共有し利用する
方法 ルーティングにアソシエーション定義
   親(Do)を作り、その子を指定します(~end)

 

 

日を振り返り】

テキストを確認しながら読み進めると、途中手を動かして記載することがある。

プログラミングを書くことに慣れることも重要だが、ペースが途切れる。

 

思考が中断してしまい、全体の工程が複雑にもなっていることもあるので、

プログラミングした後に、何故こうなったのか流れを再度戻らなくてはならない。

全体の流れを読んだ後に、手を動かす時間として方法を変えるようにする。