2014-01-09 4 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

Смежные вопросы