0

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

2 回答 2

0

在这一点上,它几乎是纯粹的语义。使用 mongoid,我知道外键存储在带有 的模型上belongs_to,所以 ActiveRecord 也可能有类似的东西。

于 2012-05-13T11:33:28.183 回答
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部分始终持有外键。

让我知道这是否适合您。

于 2012-05-13T12:10:08.567 回答