Rails外键设置

时间:2014-01-09 17:54:06

标签: ruby-on-rails

我有一个带有客户端和联系人模型的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缺失

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您需要撤销您的关联。无论哪个类都具有foreign_key,都应该具有belongs_to关联。在您的情况下,Client模型具有foreign_key。因此Clientbelong_to primary_contact

在client.rb中

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"