我有一个带有客户端和联系人模型的Rails应用程序。
Client has_many :contacts
Contact belongs_to :client
我想确定客户的其中一个联系人是主要联系人。但是,我不明白如何做到这一点。
现在,我已经在客户端模型中得到了这个:
has_many :contacts
has_one :primary_contact, :class_name => "Contact", :foreign_key => "primary_contact_id"
这在Contact模型中:
belongs_to :client
belongs_to :client_as_primary, :class_name => "Client", :foreign_key => "primary_contact_id"
我添加了一个字段= client.primary_contact_id
这在视图中:
<td> <%= @client.primary_contact.contact_full_name %></td>
这给了我这个:
SELECT "contacts".* FROM "contacts" WHERE "contacts"."tenant_id" = 1 AND "contacts"."primary_contact_id" = 13 LIMIT 1
这会导致PG错误,因为contacts.primary_contact_id
缺失
感谢您的帮助!
答案 0 :(得分:0)
您需要撤销您的关联。无论哪个类都具有foreign_key,都应该具有belongs_to
关联。在您的情况下,Client
模型具有foreign_key
。因此Client
应belong_to primary_contact
has_many :contacts
belongs_to :primary_contact, :class_name => "Contact", :foreign_key => "primary_contact_id"
in contact.rb
belongs_to :client
has_one :client_as_primary, :class_name => "Client", :foreign_key => "primary_contact_id"