在Ruby on Rails中显示模型的所有可用命名范围

时间:2010-05-10 15:23:59

标签: ruby-on-rails searchlogic

特别是在使用Searchlogic时。我很难猜出用于实现我需要的命名范围。

1 个答案:

答案 0 :(得分:1)

您可以使用

获取模型的所有已定义的命名范围
Model.scopes
=> {:one_scope_name=>#<Proc:0x0000...>, :other_scope_name=>#<Proc:0x0000...>, ... }

它会为您提供哈希值,因此如果您只想要名称,请使用Model.scopes.keys

但这只会为您提供已定义的范围。由searchlogic生成的范围对你没有帮助,因为你可以在documentation(在引擎部分)中阅读,field_eq等范围只有在首次使用时才会创建:< / p>

  

“Searchlogic使用method_missing   创建所有这些命名范围。   当它命中method_missing时会创建   一个命名的范围,以确保它永远不会   命名方法缺少命中方法   范围再次。一种缓存   机制。它的工作原理相同   时尚为ActiveRecord的“find_by_ *”   方法。这种方式只有命名   你需要的范围是创建和   仅此而已。“