多态关联
这种类型的关联允许 ActiveRecord 模型属于多种模型记录。常见例子:
class Human < ActiveRecord::Base
has_one :address, :as => :addressable
end
class Company < ActiveRecord::Base
has_one :address, :as => :addressable
end
class Address < ActiveRecord::Base
belongs_to :addressable, :polymorphic => true
end
如果没有此关联,你将在地址表中拥有所有这些外键,但你只有其中一个的值,因为在这种情况下,地址只能属于一个实体(人或公司)。这是它的样子:
class Address < ActiveRecord::Base
belongs_to :human
belongs_to :company
end