2014-01-09 104 views
0

我有一個客戶端和聯繫人模型的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" 

這在聯繫人模式:

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

您需要反轉您的關聯。無論哪個班級都有foreign_key應該有belongs_to關聯。在你的情況下,Client模型有foreign_key。所以Client應該belong_to primary_contact

在client.rb

has_many :contacts 
belongs_to :primary_contact, :class_name => "Contact", :foreign_key => "primary_contact_id" 

在contact.rb

belongs_to :client 
has_one :client_as_primary, :class_name => "Client", :foreign_key => "primary_contact_id" 
+0

感謝您的回答! – Reddirt