如何获取ActiveRecord的所有范围列表(rails 3.1)

时间:2011-07-27 06:53:56

标签: ruby-on-rails-3.1

如何使用Rails 3.1获取ActiveRecord模型中所有范围的列表?

根据3.0.9的文档,应该有一个名为“scopes”http://api.rubyonrails.org/classes/ActiveRecord/NamedScope/ClassMethods.html#method-i-scopes的方法,但该方法似乎不存在。

2 个答案:

答案 0 :(得分:0)

您可以使用Model.send(:valid_scope_name?, scope_name)来测试该类是否存在范围。范围确实在Rails 2.x中有意义,但不再在3.x中,你有关系对象。

所以相反:

 scope :red_ones, where(color: 'red')

你会:

 def self.red_ones
   where(color: 'red')
 end

答案 1 :(得分:0)

@miloops

我认为是这样的:

class MyModel
  scope :give_me_sth, -> { where(sth: true) }
end

然后我想看看:

MyModel.show_me_the_scopes
# => [:give_me_sth]

ActiveRecord在检查其属性时非常强大(请参阅关联等)...应该也应该有一些方法来获取此信息