2011-10-30 6 views
0

表:RAW_DATA フィールド:ID 名ここではどのモデル関係を使用する必要がありますか?

表:Actual_Data フィールド:ID raw_data_id使用は手動Actual_Dataにデータを追加することができ

名(この場合はNULLであるraw_data_id'S)またはそれらActual_Dataに挿入するRaw_Dataを選択できます(raw_data_idが設定されている場合)。

この場合、次の関係は正しいですか? RAW_DATAについては

: Actual_Dataの場合 - なし -

: にhas_one:RAW_DATA

答えて

1

あなたは関係がレールを1として

class ActualDate < ActiveRecord::Base 
    has_one :raw_data 
end 

class RawData < ActiveRecord::Base 
    belong_to :actual_data 
end 

、あなたが言ったように同じであるべき正しいです外部キーは、belongs_toの関連付けを持つテーブルに属している必要があります。したがって、actual_data_idは、raw_datasテーブルにある必要があります。

編集: actual_data_idはactual_datasテーブルには必要ありません。

+0

Raw_Dataの一部のみがActual_Dataに追加されます。それは問題だろうか? (一部のraw_dataエントリは決して使用されず、外部キー関連を持たないため)。 – Hopstream

+0

actual_dataオブジェクトのraw_dataを使用する前にnilチェックを行う限り、問題はありません。例えば:actual_data.raw_data && actual_data.raw_data.idは決して壊れません。 – nkm

+0

恐ろしい!ありがとう! – Hopstream

0

良いオプションはbelongs_toだと思います。

Raw_Data has many or has one Actual_Data 
Actual_Data belongs to Raw Data. 

操作を行う前に、raw_dataがnilであるかどうかを確認するだけで十分です。

manually_created = ActualData.create(:name => "Something"); 
builded = @RawData.build_actual_data(:name => "Something else"); 

最初はヌルに設定され、列、及び第二exapleを持つことになり、@ RawData.id値にraw_data_id設定されます。

関連する問題