12

RailsGuides 说:

http://guides.rubyonrails.org/association_basics.html 一个 has_many “关联表明模型的每个实例都有另一个模型的零个或多个实例。”

“has_one 关联还与另一个模型建立了一对一的连接,但语义(和结果)有所不同。这种关联表明模型的每个实例都包含或拥有另一个模型的一个实例。”

这是否意味着如果我想建立一个模型的每个实例都有另一个模型的零个或一个实例的关联,最好的方法是使用 has_many 而不是 has_one?如果我使用 has_one 会遇到什么问题?

谢谢。

4

2 回答 2

19

has_one是正确的 - 除非您向其中添加自己的验证,否则设置的关系不是强制性的。

为了更清楚一点 -

class Post < ActiveRecord::Base
  has_one :author

end

class Author < ActiveRecord::Base
  belongs_to :post 

end

在没有验证的情况下,一个给定的post可以有一个作者(但不能超过一个)——但是作者不是必需的。

于 2013-09-25T12:49:56.593 回答
5

除非您定义特定的验证,否则has_one只会阻止您将多个对象关联到您的模型。零就好了。

于 2013-09-25T12:49:11.727 回答