1

Ruby on Rails を使用していますが、一般的なソリューションにも関心があります。モデル ユーザー、モデル料理、およびこの 2 つを接続するリレーショナル テーブルがあり、ユーザーが「お気に入りの料理」のリストを持つことができるとします。ユーザーにはすべての料理のリストが表示され、個別にチェックを付けたり外したりできます。たとえば、アリスがアメリカ料理、インド料理、中華料理を好きになったとします。次に、中国語のチェックを外し、タイ語を追加して保存します。リレーショナル テーブルを更新する最善の方法は何ですか?

私には 3 つの解決策がありますが、この操作は非常に一般的であるため、より洗練された解決策を望んでいました。そうでない場合、これを行う標準的な方法は何ですか?

  • 追加されたセットと削除されたセットを保持し、それらが重複していないことを確認してください
  • ユーザーのお気に入りの食べ物をすべてドロップし、選択したものを挿入します
  • 個々の追加と削除を更新する ajax 呼び出しを行う
4

1 に答える 1

0

アプローチを使用しassociation_idsます。料理のリストを探してユーザーに割り当てる代わりに、ID のリストを取得して に割り当てますuser.cuisine_ids。レコードを保存すると、関連付けレコードが生成されます。チェックボックスを使用しているため、ユーザーがすべてのチェックを外してから保存するシナリオには注意してください。通常、変更は保存されず、古い選択済みの料理が選択されたままになります。nilこれは、チェックボックスと同じ名前の隠し値を追加することで簡単に修正できます。

于 2013-02-05T01:44:59.550 に答える