我正在尝试创建一个对该Event
模型有两个引用的Contact
模型。
为什么是两个?因为 aContact
可以是 typeClient
或Organizer
.
如何向我的Event
模型添加两个外键列?
我正在尝试创建一个对该Event
模型有两个引用的Contact
模型。
为什么是两个?因为 aContact
可以是 typeClient
或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
可能不是您正在寻找的解决方案,但我认为在这种情况下使用“多态关联”是合适的。
因此,您的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