Могу ли я создать *un* именованную область в Rails?

Я знаю, что вы можете создавать именованные области в Rails, которые позволяют вам указывать условия, которые затем могут быть построены позже:

named_scope :active, :conditions => {:active => true}

...

MyModel.active.find(...)

Это работает путем создания прокси-объекта, который не будет оцениваться до тех пор. Я хочу знать, возможно ли создать динамическую область без имени?

Я имею в виду, есть ли метод "Foo", с помощью которого я могу пойти

scope = MyModel.foo(:conditions => {:target_id => 4})

а затем пройти scope вокруг как прокси-объект, который я могу сделать больше .finds или другие звонки в области?

1 ответ

Решение

Да, проверьте Анонимные Области:

def find_products
  scope = Product.scoped({})
  scope = scope.conditions "products.name LIKE ?", "%#{keywords}%" unless keywords.blank?
  scope = scope.conditions "products.price >= ?", minimum_price unless minimum_price.blank?
  scope = scope.conditions "products.price <= ?", maximum_price unless maximum_price.blank?
  scope = scope.conditions "products.category_id = ?", category_id unless category_id.blank?
  scope
end
Другие вопросы по тегам