我可以创建一个*未*命名范围,Rails的?
-
19-09-2019 - |
题
我知道你可以创建Rails的命名范围,它允许你指定,然后可以建立在条件后:
named_scope :active, :conditions => {:active => true}
...
MyModel.active.find(...)
这通过创建未计算,直到后来上的代理对象。我想知道的是,如果有可能创建一个动态的未的命名范围?
我指的是,有一个方法“富”与我可以去
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