2013-08-25 6 views
0

В качестве примера я хочу модель, в которой у Клиента есть как технический контакт, так и админ-контакт. Я хочу, чтобы поля named в записи Customer для tech_contact и admin_contact.Активная запись foreign_keys?

Ключи должны находиться в таблице Customer, потому что несколько клиентов тот же технический контакт ...

я не могу показаться, чтобы получить эту работу.

Любые идеи?

Спасибо,

J

+0

Что вы подразумеваете под «named fields»? Не могли бы вы также объяснить, какие данные должны храниться для технических и административных контактов? Это одни и те же данные как для технических, так и для админ-контактов? –

ответ

0

модель Заказчик:

class Customer < ActiveRecord::Base 
    has_one :tech_contact 
    has_one :admin_contact 
end 

Вы можете создать базовую модель под названием Контакты и использовать единую таблицу наследования (ИППП).

class Contact < ActiveRecord::Base 
end 

TechContact:

class TechContact < Contact 
    belongs_to :customer, :foreign_key => :customer_id 
end 

AdminContact

class AdminContact < Contact 
    belongs_to :customer, :foreign_key => :customer_id 
end 

Таблица схема: клиентов: идентификатор, first_name,: last_ имя, ... контактов: идентификатор, Тип, customer_id , ...

Но это только одна возможность.

+1

Не должен ли здесь внешний ключ «tech_contact_id» и «admin_contact_id»? –

+0

Это не работает для меня. В какую таблицу входит поле «contact_id»? –

+0

Я обновил свой ответ. @Ryan Bigg..но только одно поле foreign_key ... иначе вы можете добавить две нормальные ассоциации из двух моделей. Но мой пример показывает этот случай в решении STI. – Mattherick

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