在下面的例子中,对于Chlid类,使用belongs_to:mother和has_one:mother之间会有什么区别?我一直在阅读关于这方面的Rails文档,除了阅读它所涉及的语义之外,我看不出其中任何一个会有所作为。
据我所知,各种关联为每个类添加了额外的方法,但是我无法找到每个关联列出的文档,方法是什么以及它们的作用。
class BiologicalMother < ActiveRecord::Base
has_many :children
end
class Child < ActiveRecord::Base
belongs_to :biological_mother
end
答案 0 :(得分:0)
此时,它几乎是纯粹的语义。使用mongoid,我知道外键存储在具有belongs_to
的模型上,因此ActiveRecord也可能存在类似的东西。
答案 1 :(得分:0)
在您的情况下,has_many
belongs_to
是正确的方法,不仅仅是语义上的,还有rails的工作原理。外键始终存储在关联的belongs_to
部分中。
有效的has_one
方案可能就像拥有Purchase
has_one
模型而BillingAddress
class Purchase
has_one :billing_address
end
class BillingAddress
belongs_to :purchase #this holds the foreign key - purchase_id
end
。
示例:
has_many
关于你的情况,你不能在一方使用has_one
而在另一方使用belongs_to
,因为{{1}}部分始终使用外键。
请告诉我这是否适合您。