列出关联模型的名称

pri*_*ry0 38 ruby ruby-on-rails ruby-on-rails-3

class Article < ActiveRecord::Base
  has_many :comments
  belongs_to :category
end
Run Code Online (Sandbox Code Playgroud)

是否有文章的类方法,我可以检索关联列表?我知道通过查看模型的代码,文章与评论和类别相关联.但有没有一种方法可以通过编程方式获得这些关联?

Mik*_*wis 62

你想要ActiveRecord :: Reflection :: ClassMethods #reflection_on_all_associations

所以它会是:

 Article.reflect_on_all_associations
Run Code Online (Sandbox Code Playgroud)

并且您可以传入一个可选参数来缩小搜索范围,因此:

 Article.reflect_on_all_associations(:has_many)

 Article.reflect_on_all_associations(:belongs_to)
Run Code Online (Sandbox Code Playgroud)

请记住,如果您想要模型的所有名称列表,您可以执行以下操作:

Article.reflect_on_all_associations(:belongs_to).map(&:name)
Run Code Online (Sandbox Code Playgroud)

这将返回所有属于的模型名称的列表Article.