一見すると、これは簡単な質問のように見えるかもしれません。以前に回答されていると思われるかもしれませんが、完全ではありません。私は Web をかなり調べましたが (スタック オーバーフローを含む)、答えを見つけることができませんでした。
これは私が見つけた最も近いものです。
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 がパートナーと共に作成されるときに、作成される連絡先の partner_id を作成される partner_id に割り当てる必要があることを ActiveRecord が認識しないことです...
ここでのベストプラクティス?その連絡先がプライマリかどうかを示す (bool またはその他の方法で) 連絡先テーブルに列を作成したくありません。それは適切なデータベースの正規化ではありません (「rails の規則」が何を宣伝しているかに関係なく)。
あなたの助けと考えをありがとう!