Вопрос

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

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

...

MyModel.active.find(...)

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

Под которым я имею в виду, есть ли метод «foo», с которым я могу пойти

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

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

Это было полезно?

Решение

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

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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top