多型關聯

這種型別的關聯允許 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