有没有办法找出模型的关联?拿这两个型号:
class Comment < ActiveRecord::Base
belongs_to :commentable
end
class Post < ActiveRecord::Base
has_many :comments
belongs_to :user
end
我正在寻找类似的东西:
Post.has_many #=> ['comments', ...]
Post.belongs_to # => ['user']
Comment.belongs_to # => ['commentable']
答案 0 :(得分:70)
您正在寻找reflect_on_all_associations
。
简而言之:
Post.reflect_on_all_associations(:has_many)
...将为所有name
个关联提供一个数组(具有has_many
等属性的对象)。
答案 1 :(得分:0)
以下将列出特定Post实例的所有关联。
#app/models/post.rb
def list_associations
associations = []
User.reflect_on_all_associations.map(&:name).each do |assoc|
association = send assoc
associations << association if association.present?
end
associations
end