2012-04-12 10 views
0

私は、ユーザが複数のものを選択できる名前のチェックボックスの集合を持っています。チェックボックスのコレクションからユーザの設定を保存する

次回のログイン時にユーザーの選択内容を保存します。

ただし、一部の名前が削除され、新しい名前が追加される可能性があります。追加された名前はチェックされていなくてもかまいませんが、削除された名前のIDを保管しておきたいと思います。

どうすればよいですか?依存=>:オプション側の関係に破壊

答えて

0

私はあなたのオプションについては、表を作成し、その後、その後、あなたが追加することができます確認オプション

を記録した結合テーブルを持っています。これは、オプションが削除されたときに結合テーブルのレコードを削除します。ここで

は、多くの多くの例である:

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 

あなたはオプションの異なる種類のために、複数の参加のテーブルを作成することができ、あなたに必要がある場合。背景色については、関連付けで色を保存することができる結合が必要であるとか、ページ上に記事の整数を格納する必要があるページング用に別のモデルでもかまいません。または、テーブルを結合して関連付けられたデータを文字列として格納し、そのテーブルだけを使用して、単一の文字列値を追加することもできます。

+0

これは素晴らしい提案ですが、単にこの設定を保存するために新しいテーブルを必要としないでしょうか?私はすべての設定を保存するためのテーブルを持つことを期待していましたが、さまざまな設定の新しいテーブルが追加されるようですが、それはちょうどそれが行く方法です。 – 99miles

+0

いいえ、レコードとして各プリファレンスを持つ1つのテーブルがあり、次にユーザーからプリファレンスへの結合テーブルがあります。新しい設定を追加するには、環境設定テーブルに行を追加して、テーブルへの参加にレコードを追加するユーザーの新しい設定をアクティブとしてマークします。 –

+0

私のテーブルに多くの環境設定が保存されていても、環境設定の1つ(またはそれ以上)がhas_manyである場合、どのように機能しますか?最初に述べたように、名前のコレクションと、background_colorのユーザーの選択肢を格納しているとしましょう。 一部の環境設定が1対多の場合、そのテーブルと結合はどのように見えますか? ID、 ACCOUNT_ID、 BACKGROUND_COLOR、 names_selection(ただし、1つだけでなく、選択されたこれらの名前の多くは可能)ので、私はあなたの提案ONE_TO_MANYのアプローチはここで働いてしまうかどうかはわかりません) – 99miles

関連する問題