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

问题描述 投票:1回答:2

如何使用Rails 3.1获得ActiveRecord模型中所有作用域的列表?

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

ruby-on-rails-3.1
2个回答
-1
投票

您可以使用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

0
投票

@ miloops

我认为是关于这个的:

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

然后我想看:

MyModel.show_me_the_scopes
# => [:give_me_sth]

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

© www.soinside.com 2019 - 2024. All rights reserved.