ブログを読んだり、レールキャストを見たり、本を読んだりしてから 2 日が経ちましたが、問題に対するエレガントな解決策が見つかりません。
コンテキスト: 複数の contact_persons を持つことができる複数のビジネスがあります。また、各ビジネスには常に 1 人のプライマリ contact_person が必要です。したがって、business_contact_personsテーブルを介して、ビジネスとcontact_personの間に多対多の関係があります。
class Business < AR
has_many :business_contact_persons, :dependent => :destroy
has_many :contact_persons, :through => :business_contact_persons
class ContactPersons < AR
has_many :business_contact_persons, :dependent => :destroy
has_many :business, :through => :business_contact_persons
class BusinessContactPerson < AR
belongs_to :business
belongs_to :contact_person
#Primary is a boolean in the database
attr_accessible :primary, :contact_id, :business_id
今、私がビジネス ビューで達成しようとしているのは、ユーザーが特定のビジネスに割り当てたいすべての contact_person を選択できるようにすることと、主要な連絡先にしたいものを選択できるようにすることです。したがって、新しいビジネス ビューでは、使用可能なすべての contact_persons を表示するチェック ボックスのグループと、プライマリを選択するための contact_persons の同じリストを持つ radio_button グループを表示できます。
ビジネスを救うために、コントローラーでこれを使用します。
@business.attributes = params[:business]
属性トラフにアクセスするため、business_contact_personsを保存するために機能します
params[:business][:contact_person_ids]
しかし、それはユーザーが選択したものにプライマリ business_contact_persons ブール値フィールドを割り当てません。さらに悪いことに、ユーザーはビジネスのプライマリ contact_person を変更できるため、ビジネスの編集をどのように処理するかということです。
また、ビジネスに主要な contact_person が割り当てられていることをどのように検証できるかについてのアイデアは非常に素晴らしいでしょう