如何在ActiveRecord 3.x中获取所有范围列表

时间:2012-09-27 07:25:42

标签: ruby ruby-on-rails-3 activerecord

我正在使用ActiveRecord和Rails 3。

我在模型中定义了范围。如何获取该模型的所有范围列表?

以前我可以使用Model.scopes

OR 我可以检查范围是否已定义?像Model.scope_defined?("scope_name")

这样的东西

提前致谢。

1 个答案:

答案 0 :(得分:5)

您可以通过这种方式查看是否定义了范围

Model.send(:valid_scope_name?, :scope_name)

如果确实存在,则返回true,如果不存在,则返回nil

如果您检查valid_scope_name?的源代码,您会发现只能使用respond_to?对其进行测试,然后避免使用日志记录部分。

Model.respond_to?(scope_name, true)