0
乍一看,這可能看起來像一個簡單的問題。你甚至可能懷疑它已被回答,但不是相當於。我已經做了大量的搜索網絡(包括堆棧溢出)並且一直無法找到答案。has_one和belongs_to在一起
這是我能找到的最接近的東西:Using has_one and belongs_to together但是它不能完全回答我的問題。
我用Rails 4和MySQL
數據庫結構如下:
夥伴表
id
name
primary_contact_id
接觸表
id
partner_id
first_name
last_name
相當直接的,正確的?自我解釋。
class Partner < ActiveRecord::Base
has_one :primary_contact, :class_name => "Partners::Contact", :primary_key => 'primary_contact_id'
has_many :contacts, :class_name => "Partners::Contact"
accepts_nested_attributes_for :primary_contact
validates_presence_of :primary_contact
end
class Partners::Contact < ActiveRecord::Base
belongs_to :partner
end
正如你可以看到,創建一個合作伙伴時,主要聯繫人是必需的(形式等都是正確設置)
我遇到的唯一問題是,當創建primary_contact與合作伙伴一起,ActiveRecord不明白需要將正在創建的聯繫人的partner_id分配給正在創建的partner_id ...
此處的最佳做法是?我不想在聯繫人表格中創建一個表示(bool或其他)聯繫人是否爲主要聯繫人的列。這不正確的數據庫規範化(不管什麼「軌道約定」吹捧)。
感謝您的幫助和想法!
這聽起來像個好主意。我剛剛嘗試過,但是由於創建合作伙伴的方式,params.require(:partner).permit(:company_name,... primary_contact_attributes:...)我的測試仍然失敗... – Volte