has_many,belongs_to和两者之间的区别

时间:2013-04-07 00:44:52

标签: ruby-on-rails database

以下三种情况有何不同?

#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只有belongs_to。

由于has_many和belongs_to都代表一对多的关系,我们如何决定应该使用这三者中的哪一个?

1 个答案:

答案 0 :(得分:2)

它们需要相同的数据库架构。不同之处仅在于为您定义了哪些方法。

当您将has_many :comments添加到User时,您可以引用user.comments,从而轻松找到特定用户对象的评论(并使用{{创建新的评论) 1}},等等。)

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

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