2013-08-25 189 views
0

作爲一個例子,我想要一個客戶同時擁有技術聯繫人和管理員聯繫人的模型。 我希望tech_contact和admin_contact的客戶記錄中的命名字段。活動記錄foreign_keys?

的鍵應該駐留在客戶表,因爲多個客戶同樣的技術聯繫人...

我似乎無法得到這個工作。

任何想法?

感謝,

Ĵ

+0

「指定字段」是什麼意思?您能否解釋一下爲技術和管理員聯繫人保存的數據?技術和管理員聯繫人的數據是否相同? –

回答

0

客戶模式:

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

您可以創建一個名爲聯繫的基本模型,並使用單表繼承(STI)。

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 

表模式: 客戶:ID,FIRST_NAME,:last_名,... 聯繫人:ID,:類型,CUSTOMER_ID ,...

但這只是一個機會。

+1

這裏的外鍵不應該是「tech_contact_id」和「admin_contact_id」嗎? –

+0

這不適合我。 'contact_id'字段屬於哪個表? –

+0

我更新了我的答案。 @Ryan Bigg ..不只是一個foreign_key字段..另外你簡單的可以從兩個模型中添加兩​​個正常的關聯。但我的例子在STI解決方案中顯示了這種情況。 – Mattherick