我正在尝试使用DataMapper迁移旧数据库,并且我遇到了多对多关系的问题。
我有一个Post
和Tag
模型,它们都通过匿名资源。我可以在post和tag模型中设置存储库名称,但不能在自动生成的PostTag
模型中设置(据我所知)。有没有办法让所有这些都使用相同的存储库名称(:legacy
)?
干杯,
汤姆
答案 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