ActiveRecord on Rails 3 でクエリを動的に組み立てる (Lazy Loading)
Lazy Loading
これで良いのかどうか、、まだ冗長に思えるのでもっと良い他の道があるのかも。
query = Entry.recent query = query.ranged params if params[:year] @entries = query.paginate :page=>params[:page] || 1, :per_page=>Entry.per_page
query interface や scope の戻り値は ActiveRecrod::Relation または ActiveRecord::NamedScope のインスタンスなので chain 出来る。
詳しくは http://asciicasts.com/episodes/202-active-record-queries-in-rails-3
query = query が冗長だ。
@entries = (Entry.query do recent ranged(params) if params[:year] end).paginate ..
とかありそうな気がする。
若しくは条件付きチェインやコードブロックを上手く使うとか。