1

以下三种情况有什么区别?

#Case 1
class User < ActiveRecord::Base
  has_many :comment
end 

class Comment < ActiveRecord::Base
  belong_to :user
end 

案例 1 同时具有 has_many 和 belongs_to。

#Case 2
class User < ActiveRecord::Base
  has_many :comment
end 

class Comment < ActiveRecord::Base
end 

案例 2 只有 has_many。

#Case 3
class User < ActiveRecord::Base
end 

class Comment < ActiveRecord::Base
  belong_to :user
end 

案例 3 只有belong_to。

既然 has_many 和 belongs_to 都代表一对多的关系,那么我们如何决定应该使用这三个中的哪一个呢?

4

1 回答 1

2

它们需要相同的数据库模式。区别仅在于为您定义了哪些方法。

当您添加has_many :comments到 时User,您可以获得引用 的能力user.comments,因此很容易找到特定用户对象的评论(并使用 来创建新的评论user.comments.build,等等)。

添加belongs_to :user到 时Comment,您可以引用comment.user,从而找到特定评论对象所属的用户。

这些调用只是创建方便的方法供您在操作模型对象时使用。我建议同时使用两者,因为您可能想要同时使用两者,并且阅读代码的人更清楚这种关系。

于 2013-04-07T00:49:10.963 回答