У меня есть две области действия
named_scope :by_foo, lambda { |foo| { :conditions => {:foo => foo} } } named_scope :by_bar, lambda { |bar| { :conditions => ["bar like ?", bar+"%"] } }
Как я могу смешать их в одной области без цепочки?
named_scope :by_baz # what that should look like ?
named_scope :by_baz, lambda {|args| by_foo(args[:foo]).by_bar(args[:bar])}
Вы можете позвонить по этому номеру:
Model.by_baz({:foo=>value, :bar=>value})
Таким образом, вы можете добавить столько областей, сколько захотите, не переписывая условие.
named_scope :by_foo_and_bar, lambda { |foo, bar| { :conditions => ["foo = ? AND bar like ?", foo, bar+"%"] } }