Могу ли я создать *un *uncome acpope в Rails?
-
19-09-2019 - |
Вопрос
Я знаю, что вы можете создавать с именованные прицелы в Rails, которые позволяют вам указать условия, которые затем могут быть построены позже:
named_scope :active, :conditions => {:active => true}
...
MyModel.active.find(...)
Это работает путем создания прокси -объекта, который не оценивается до позже. Я хочу знать, возможно ли создать динамику ООННазванный Scope?
Под которым я имею в виду, есть ли метод «foo», с которым я могу пойти
scope = MyModel.foo(:conditions => {:target_id => 4})
а затем пройти scope
вокруг как прокси -объект, который я могу сделать больше .find
S или другие призывы к прицеле?
Решение
Да, проверьте Анонимные прицелы:
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
Не связан с StackOverflow