10

我正在使用带有 Rails 3 的 ActiveRecord。

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

以前我可以使用Model.scopes

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

提前致谢。

4

1 回答 1

6

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

Model.send(:valid_scope_name?, :scope_name)

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

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

Model.respond_to?(scope_name, true)
于 2012-09-27T07:28:10.387 回答