2012-03-20 2 views

ответ

4

named_scope :by_baz, lambda {|args| by_foo(args[:foo]).by_bar(args[:bar])}

Вы могли бы назвать его:

Model.by_baz({:foo=>value, :bar=>value})

Таким образом, вы можете добавить столько областей, как вам нравится, не переписывая условие.

+0

Очень читаемое и суровое решение, удивительное, thx – astropanic

1
named_scope :by_foo_and_bar, lambda { |foo, bar| { :conditions => ["foo = ? AND bar like ?", foo, bar+"%"] } } 
+0

Спасибо, но это подразумевает дублирование кода, когда вы меняете одну из областей ввода, вам тоже нужно переписать – astropanic

Смежные вопросы