Model.scoped
ActiveRecord で Model の空のリレーションを作成するには、scoped メソッドを使うらしい。(WEB-DB PRESSに載ってたらしいけど引っ張り出せない。)
https://github.com/rails/rails/blob/master/activerecord/lib/active_record/named_scope.rb
ri scoped する。
Returns an anonymous scope. posts = Post.scoped posts.size # Fires "select count(*) from posts" and returns the count posts.each {|p| puts p.name } # Fires "select * from posts" and loads post objects fruits = Fruit.scoped fruits = fruits.where(:colour => 'red') if options[:red_only] fruits = fruits.limit(10) if limited? Anonymous scopes tend to be useful when procedurally generating complex queries, where passing intermediate values (scopes) around as first-class objects is convenient.
こんな感じか。
# model class Item < ActiveRecord::Base # .. def self.rel(condition = nil) if condition.present? where(condition) else scoped end end end # controller cond = { :cond => :somthing } @items = Item.rel(cond).paginate(:page => 1) #...