Ruby on Rails belongs_to vs. has_one association - 请求澄清

时间:2012-05-13 11:29:53

标签: ruby-on-rails associations

在下面的例子中,对于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

2 个答案:

答案 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}}部分始终使用外键。

请告诉我这是否适合您。