DataMapper - 使用匿名资源为多对多关系设置存储库

时间:2013-02-28 23:22:20

标签: ruby ruby-datamapper

我正在尝试使用DataMapper迁移旧数据库,并且我遇到了多对多关系的问题。

我有一个PostTag模型,它们都通过匿名资源。我可以在post和tag模型中设置存储库名称,但不能在自动生成的PostTag模型中设置(据我所知)。有没有办法让所有这些都使用相同的存储库名称(:legacy)?

干杯,
汤姆

1 个答案:

答案 0 :(得分:1)

您可以为“中间”资源创建一个普通的DM模型,以便能够定义存储库名称,例如

model PostTag
  include DataMapper::Resource
  def self.default_repository_name; :legacy end
  belongs_to :post, :key => true
  belongs_to :tag, :key => true
end

并在这两个父母中,使用:through定义连接。例如,

model Post
  # other definitions ...
  has n, :post_tags
  has n, :tags, :through => :post_tags
end