DataMapper - 为什么"has"和"belongs_to"?

Mik*_*eC8 4 ruby sinatra ruby-datamapper

我刚刚开始使用DataMapper,我正在试图弄清楚为什么需要指定a has和a belongs_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
Run Code Online (Sandbox Code Playgroud)

Daa*_*aan 7

仅当您要使用额外规范生成的方法时,才指定关系的两侧.它完全是可选的:如果你永远不需要PostComment(例如@comment.post)获取,你将不必指定belongs_to关系Comment.

一个优点是您的实例更清晰,因为Comment其他方法不会自动生成.另一方面,如果你需要它们,那些额外的方法不会打扰你.

另请参阅ActiveRecord中有关关联文档.