2012-05-13 15 views
0

次の例では、Chlidクラスのbelongs_to:motherとhas_one:motherの違いは何でしょうか?私はこれについてRailsのドキュメントを読んできましたが、どちらか一方がそれを読むことに関わるセマンティクスとどのように異なるかを見ることはできません。Ruby on Railsのbelongs_to対has_oneの関連付け - 明確化が要求されました

さまざまな関連付けによって、各クラスに余分なメソッドが追加されていますが、メソッドごとに何が行われているのかを関連付けごとにリストするドキュメントを見つけることができませんでした。

class BiologicalMother < ActiveRecord::Base 
    has_many :children 
end 

class Child < ActiveRecord::Base 
    belongs_to :biological_mother 
end 
+0

「belongs_toとhas_oneの選択」の公式ドキュメントは次のとおりです。http://guides.rubyonrails.org/association_basics.html#choosing-between-belongs-to-and-has-oneと、「 「foreign_key」を置く場所が区別されます(belongs_toアソシエーションを宣言するクラスのテーブルにあります)。「 –

答えて

0

あなたのケースでは、has_manybelongs_toは、意味的ではなくレールの動作方法に適しています。外部キーは、アソシエーションの一部であるbelongs_toに常に格納されます。 有効なhas_oneシナリオはPurchaseモデルhas_oneBillingAddressのようなものです。

例:

class Purchase 
    has_one :billing_address 
end 

class BillingAddress 
    belongs_to :purchase #this holds the foreign key - purchase_id 
end 

あなたのケースについてbelongs_to部分は常に外部キーを保持しているため、あなたは協会の他の側面に片側でhas_manyhas_oneを使用傾けます。

これがうまくいくかどうか教えてください。

+0

これは、私が理解するために必要な説明でした。特に反対のモデルではhas_oneとhas_manyを使用できませんでした。 [それは落胆しているように見えたが、私は理由を知らなかった]。ありがとう! – bdx

0

この時点では、ほぼ純粋なセマンティクスです。モンゴイドの場合、私は外部キーがbelongs_toのモデルに格納されていることを知っているので、ActiveRecordでもそのようなものがあるかもしれません。

関連する問題