Gar*_*eth 4 named-scope ruby-on-rails anonymous-scope
我知道你可以在Rails中创建命名范围,它允许你指定可以在以后构建的条件:
named_scope :active, :conditions => {:active => true}
...
MyModel.active.find(...)
Run Code Online (Sandbox Code Playgroud)
这通过创建一个代理对象来工作,该代理对象直到稍后才进行评估.我想知道的是,是否可以创建一个动态的未命名范围?
我的意思是,有一种方法'foo'我可以去
scope = MyModel.foo(:conditions => {:target_id => 4})
Run Code Online (Sandbox Code Playgroud)
然后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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
553 次 |
| 最近记录: |