以下三种情况有何不同?
#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都代表一对多的关系,我们如何决定应该使用这三者中的哪一个?
答案 0 :(得分:2)
它们需要相同的数据库架构。不同之处仅在于为您定义了哪些方法。
当您将has_many :comments
添加到User
时,您可以引用user.comments
,从而轻松找到特定用户对象的评论(并使用{{创建新的评论) 1}},等等。)
将user.comments.build
添加到belongs_to :user
后,您就可以引用Comment
,从而找到特定评论对象所属的用户。
这些调用只是为操作模型对象时创建的便捷方法。我建议同时使用两者,因为你可能想要使用两者,并且阅读代码的人之间的关系更清晰。