maeshimaの日記

メモ書きです

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