特别是在使用Searchlogic时。我很难猜出用于实现我需要的命名范围。
答案 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_ *” 方法。这种方式只有命名 你需要的范围是创建和 仅此而已。“