ruby-on-rails – 我可以在Rails中创建一个* un *命名范围吗?

我知道你可以在Rails中创建命名范围,它允许你指定可以在以后构建的条件:

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

...

MyModel.active.find(...)

这通过创建一个代理对象来工作,该代理对象直到稍后才进行评估.我想知道的是,是否可以创建一个动态的未命名范围?

我的意思是,有一种方法’foo’我可以去

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

然后传递范围作为代理对象,我可以做更多.finds或其他范围的调用

解决方法

是的,请检查 Anonymous Scopes

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

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...