rails 独学して軽くにちゃんまとめつくる

rails tutorial 11章 を読んで

 

データベースを関連づけるのにhas_manyなどをつかい、user.micropost.createというのをかけるようになったが、

ser_idは自動的に正しい値に設定されます。

と書いてあることから、userとmicropostには同じカラム名が存在することが養成されているということなの?

 

buildするとき

リスト11.37のフォームが動くようにするためには、2箇所の変更が必要です。1つは、(以前と同様) 関連付けを使用して次のように@micropostを定義することです。

@micropost = current_user.microposts.build

というように、インスタンス変数に代入する

 

 

 

SQLを書くときはエスケープする

Micropost.where("user_id = ?", id)

上の疑問符があることで、SQLクエリにインクルードされる前にidが適切にエスケープされることを保証してくれるため、SQLインジェクションと呼ばれる深刻なセキュリティホールを避けることができます。この場合のid属性は単なる整数 (すなわちself.idはユーザーのid) であるため危険はありませんが、SQL文にインクルードされる変数を常にエスケープする習慣はぜひ身につけてください。

ーーー11.44下

if文の書き方

 if logged_in?
    @micropost  = current_user.microposts.build
    @feed_items = current_user.feed.paginate(page: params[:page])
  end

といった前置if文に変わっています (訳注: 1行のときは後置if文、2行以上のときは前置if文を使うのがRubyの習慣です

 

 

@feed_items = current_user.feed.paginate(page: params[:page])

この後ろに.pagenate(page:params[:page]) がわからん。なんやこれ。

 

 

1355

 

 

11/28

今日は鬱気味。休む。