私はあなたのオプションについては、表を作成し、その後、その後、あなたが追加することができます確認オプション
を記録した結合テーブルを持っています。これは、オプションが削除されたときに結合テーブルのレコードを削除します。ここで
は、多くの多くの例である:
def User < ActiveRecord::Base
has_many :preferences, :dependent=>:destroy
has_many :options, :through=>:preferences
end
def Preferences < ActiveRecord::Base
belongs_to :user
belongs_to :option
end
def Option < ActiveRecord::Base
has_many :preferences, :dependent=>:destroy
has_many :users, :through=>:preferences
end
あなたはオプションの異なる種類のために、複数の参加のテーブルを作成することができ、あなたに必要がある場合。背景色については、関連付けで色を保存することができる結合が必要であるとか、ページ上に記事の整数を格納する必要があるページング用に別のモデルでもかまいません。または、テーブルを結合して関連付けられたデータを文字列として格納し、そのテーブルだけを使用して、単一の文字列値を追加することもできます。
これは素晴らしい提案ですが、単にこの設定を保存するために新しいテーブルを必要としないでしょうか?私はすべての設定を保存するためのテーブルを持つことを期待していましたが、さまざまな設定の新しいテーブルが追加されるようですが、それはちょうどそれが行く方法です。 – 99miles
いいえ、レコードとして各プリファレンスを持つ1つのテーブルがあり、次にユーザーからプリファレンスへの結合テーブルがあります。新しい設定を追加するには、環境設定テーブルに行を追加して、テーブルへの参加にレコードを追加するユーザーの新しい設定をアクティブとしてマークします。 –
私のテーブルに多くの環境設定が保存されていても、環境設定の1つ(またはそれ以上)がhas_manyである場合、どのように機能しますか?最初に述べたように、名前のコレクションと、background_colorのユーザーの選択肢を格納しているとしましょう。 一部の環境設定が1対多の場合、そのテーブルと結合はどのように見えますか? ID、 ACCOUNT_ID、 BACKGROUND_COLOR、 names_selection(ただし、1つだけでなく、選択されたこれらの名前の多くは可能)ので、私はあなたの提案ONE_TO_MANYのアプローチはここで働いてしまうかどうかはわかりません) – 99miles