Railscasts #1 - #9

最新エピソード#93まで、ようやく見た。いやあ、おなかいっぱい。
でも最初に見たのはすっかり忘れてる気がするから、もういちどメモを取りながら見直してみることにする。

#1 Railscasts - Caching with Instance Variables

  • DBクエリみたいな重い処理は、結果をインスタンス変数に入れておくといいよ
  • そのときは ||= を使って代入するメソッドを使うといいよ(ラッパーをつくるといいよ)

最初はこんなネタだったのか。微笑ましい。これが後に怒濤のような超絶テクニックに変貌するんだ。

#2 Railscasts - Dynamic find_by Methods

  • ActiveRecordのfindメソッドは、find_by_...とかfind_all_by_...でカラム名を直接指定して条件検索ができるよ

基本。

#3 Railscasts - Find Through Association

  • has_manyの場合に、関連先メソッドから直接チェインしてfindが書けるよ

これも便利。

#4 Railscasts - Move Find into Model

  • コントローラで条件付き検索を直接するより、モデルに条件付き検索メソッドを作ったほうが見やすいし使い回しできるよ

うんうん。でも、:includeをつかうときに、どこまで含めるかで条件が違うから難しいかも?

#5 Railscasts - Using with_scope

  • with_scopeでブロック内のメソッドに同じオプションを渡せるよ
  • オプションをパラメータに取るメソッドをつくるともっと汎用的だよ

そういえば使うの忘れてた。そうか、:includeで条件が違うときはwith_scopeを使えばよかったのか。

#6 Railscasts - Shortcut Blocks with Symbol to_proc

  • Symbol#to_procを使うとブロック引数が省略できて便利だよ

これは話題になったやつだね。引数があるときはどうするんだったかな。できないんだっけ。忘れた。

#7 Railscasts - All About Layouts

  • app/views/layouts/appliction.rhtml*1で共通レイアウトを定義できるよ
  • app/views/layouts/コントローラ名.rhtmlを置くと、コントローラのレイアウトだよ
  • layoutメソッドに文字列を指定するとそのコントローラ名のレイアウトが使われるよ
  • layoutメソッドにシンボルを指定するとその名前のメソッドが呼ばれてダイナミックにレイアウトが変えられるよ
  • renderメソッドに:layoutを指定すれば、レイアウトをオーバーライドできるよ

#8 Railscasts - Layouts and content_for

  • content_forにブロックをつけると、レイアウトでyieldを使って呼び出せるから、テンプレートごとにスタイルシートを追加したりできるよ

content_tagならよく使ってるんだけどな。

#9 Railscasts - Filtering Sensitive Logs

  • filter_parameter_loggingでパスワードとかがログに残らないようにできるよ
  • developmentモードだとSQLのログはやっぱり残っちゃうけど、productionモードなら残らないよ


今日はここまで。しかしこのペースじゃ絶対続かないな。

*1:Rails 2.0 では拡張子は .html.erb