模型的关系

fl0*_*00r 2 ruby ruby-on-rails

如何获得模型的所有关系.IE,我有User型号:

class User < AR::Base
  has_many :messages, :foreign_key => 'author'
  has_many :posts
  belongs_to :role
end
Run Code Online (Sandbox Code Playgroud)

那么我怎么知道User模型有哪些关系呢?和foreign_keys如果被呈现.

Ale*_*yne 7

User.reflect_on_all_associations.each do |assoc|
  puts "#{assoc.macro} #{assoc.name}"
end
Run Code Online (Sandbox Code Playgroud)

输出:

has_many messages
has_many posts
belongs_to role
Run Code Online (Sandbox Code Playgroud)

reflect_on_all_associations方法返回一个MacroReflection对象数组.它们也支持其他方法,用于查询每个关联的选项哈希和其他有用的东西.