我正在嘗試創建一個Event
模型,該模型有兩個對Contact
模型的引用。對於同一行中的兩個外鍵引用,我應該使用哪種類型的模型關係?
爲什麼兩個?因爲Contact
可以是Client
或Organizer
類型。
如何將兩個外鍵列添加到我的Event
模型中?
我正在嘗試創建一個Event
模型,該模型有兩個對Contact
模型的引用。對於同一行中的兩個外鍵引用,我應該使用哪種類型的模型關係?
爲什麼兩個?因爲Contact
可以是Client
或Organizer
類型。
如何將兩個外鍵列添加到我的Event
模型中?
我想這是你想要什麼:
class Event < ActiveRecord::Base
has_many :clients, :class_name => 'Contact', :foreign_key => 'client_id'
has_many :organizers, :class_name => 'Contact', :foreign_key => 'organizer_id'
end
可能不是你正在尋找的解決方案,但我認爲在這種情況下使用「Polymorphic Associations」將是合適的。
因此,您的Contact
模型將是多態關聯模型,它將保留每行Client
或Organizer
。然後
這些模型之間的關聯是:
class Event < ActiveRecord::Base
has_many :contacts
end
class Contact < ActiveRecord::Base
belongs_to :contactable, polymorphic: true
belongs_to :event
end
class Client < ActiveRecord::Base
has_many :contacts, as: :contactable
end
class Organizer < ActiveRecord::Base
has_many :contacts, as: :contactable
end
該模型的遷移將被:
class CreateContacts < ActiveRecord::Migration
def change
create_table :contacts do |t|
t.references :contactable, polymorphic: true
# Other contacts attributes
end
end
end
+1超過繼承組成 – TheIrishGuy