如何使用Rails 3.1获取ActiveRecord模型中所有范围的列表?
根据3.0.9的文档,应该有一个名为“scopes”http://api.rubyonrails.org/classes/ActiveRecord/NamedScope/ClassMethods.html#method-i-scopes的方法,但该方法似乎不存在。
答案 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在检查其属性时非常强大(请参阅关联等)...应该也应该有一些方法来获取此信息