mxg*_*grn 8 activerecord named-scope ruby-on-rails searchlogic
我看到问题的本质
有一天,如果我没弄错的话,我已经看到了重用named_scope来定义另一个named_scope的例子.像这样的东西(不记得确切的语法,但这正是我的问题):
named_scope :billable, :conditions => ...
named_scope :billable_by_tom, :conditions => {
:billable => true,
:user => User.find_by_name('Tom')
}
Run Code Online (Sandbox Code Playgroud)
问题是:如果可能的话,确切的语法是什么?我找不到它,谷歌也没有帮助.
一些解释
为什么我真的想要它,是因为我使用Searchlogic来定义一个复杂的搜索,这可能会产生如下表达式:
Card.user_group_managers_salary_greater_than(100)
Run Code Online (Sandbox Code Playgroud)
但到处都是太长了.因为据我所知,Searchlogic只是动态定义了named_scopes,我想在Card类上设置一个named_scope,如下所示:
named_scope from_big_guys, { user_group_managers_salary_greater_than(100) }
Run Code Online (Sandbox Code Playgroud)
- 这是我在named_scope中使用那个漫长的Searchlogic方法的地方.但是,再次,语法是什么?无法弄清楚.
恢复
那么,named_scope嵌套(我不是指链接)实际上可能吗?
您可以使用proxy_options将一个named_scope回收到另一个:
class Thing
#...
named_scope :billable_by, lambda{|user| {:conditions => {:billable_id => user.id } } }
named_scope :billable_by_tom, lambda{ self.billable_by(User.find_by_name('Tom').id).proxy_options }
#...
end
Run Code Online (Sandbox Code Playgroud)
这样它就可以与其他named_scopes链接.
我在我的代码中使用它,它完美地工作.
我希望它有所帮助.
| 归档时间: |
|
| 查看次数: |
4892 次 |
| 最近记录: |