Ruby on rails RubyonRails属于vs.有一个关联-需要澄清
在下面的例子中,在Chlid类中使用belishto:mother和has\u one:mother有什么区别?我一直在阅读Rails文档,除了阅读它所涉及的语义之外,我看不出其中任何一个会有什么不同 据我所知,各种关联为每个类添加了额外的方法,但我还没有找到文档来列出每个关联的方法是什么以及它们的作用Ruby on rails RubyonRails属于vs.有一个关联-需要澄清,ruby-on-rails,associations,Ruby On Rails,Associations,在下面的例子中,在Chlid类中使用belishto:mother和has\u one:mother有什么区别?我一直在阅读Rails文档,除了阅读它所涉及的语义之外,我看不出其中任何一个会有什么不同 据我所知,各种关联为每个类添加了额外的方法,但我还没有找到文档来列出每个关联的方法是什么以及它们的作用 class BiologicalMother < ActiveRecord::Base has_many :children end class Child < ActiveR
class BiologicalMother < ActiveRecord::Base
has_many :children
end
class Child < ActiveRecord::Base
belongs_to :biological_mother
end
class/other
在这一点上,它几乎是纯语义的。使用mongoid,我知道外键存储在带有所属
的模型上,所以ActiveRecord也可能有类似的情况。在您的例子中,有许多所属
不仅在语义上而且在rails的工作方式上都是正确的方法。外键始终存储在关联的所属部分。
一个有效的有一个
场景可能类似于有一个购买
模型,它有一个
账单地址
例如:
class Purchase
has_one :billing_address
end
class BillingAddress
belongs_to :purchase #this holds the foreign key - purchase_id
end
对于您的情况,您不能使用在关联的一侧有多个,而在关联的另一侧有一个,因为属于部分始终持有外键
让我知道这是否适用于您。这是我需要帮助我理解的解释,特别是我不能在相反的模型上使用has_-one和has_-many[尽管这似乎令人沮丧,但我不知道为什么]。谢谢下面是关于“在属于和拥有之间进行选择”的官方文档,其中写道:“区别在于外键的放置位置(它放在表中,用于声明属于关联的类)”