ASCIIcasts - Decent Exposure
ASCIIcasts - “Episode 259 - Decent Exposure”を読んで。decent_exposureという、コントローラでインスタンス変数に値をセットする部分を簡単にするgemについての記事。
def show @article = Article.find(params[:id]) end
のような、コントローラ中に書く処理を
expose(:article) def show end
のような形にする。これによってコントローラがすっきりするのと、もし@articleをview中で使わないようなときにDBへアクセスしなくてすんだりする(lazy loading)という利点がある。
他に設定できること
- 関連を持つ(Article -> Comment)モデルの設定も出来る
- 条件を設定することもできる
expose(:visible_articles) { Article.order(:name).where(:visible => true) }
- デフォルトの設定も出来る
default_exposure do |name| ObjectCache.load(name.to_s) end