我刚刚开始使用 DataMapper,我想弄清楚为什么需要指定 hasbelongs_to

例如,查看 DataMapper 网站上的示例。这不是多余的吗?如果发布 has n 评论,那么评论不会自动发布 belongs_to 吗?为什么我必须指定这个?

class Post
  include DataMapper::Resource

  property :id, Serial

  has n, :comments
end

class Comment
  include DataMapper::Resource

  property :id,     Serial
  property :rating, Integer

  belongs_to :post  # defaults to :required => true

  def self.popular
    all(:rating.gt => 3)
  end
end

最佳答案

仅当您想使用由额外规范生成的方法时,才指定关系的双方。它是完全可选的:如果您永远不需要从 Post 获取 Comment (例如 @comment.post ),则不必在 belongs_to 中指定 Comment 关系。

一个优点是您的实例更简洁一些,因为在 Comment 中附加方法不是自动生成的。另一方面,如果您需要它们,那些额外的方法不会打扰您。

另见 documentation about associations in ActiveRecord

关于ruby - DataMapper - 为什么是 "has"和 "belongs_to"?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7322569/

10-14 01:47