DataMapper:与多个模型之一的一对多关系?

时间:2013-05-28 19:48:49

标签: ruby orm sinatra datamapper

这是我的模特:

class Item
  include DataMapper::Resource

  property :id, Serial

  has 1, :firstitem
  has 1, :seconditem
end

class FirstItem
  include DataMapper::Resource

  property :id, Serial

  belongs_to :item
end

class SecondItem
  include DataMapper::Resource

  property :id, Serial

  belongs_to :item
end

现在,我的问题是 - 如果我希望FirstItemSecondItem成为不同的模型,但希望它们都可能成为Item的一部分(但只有两个中的一个,所以FirstItem的记录也不会有SecondItem),我可以为他们两个建立has 1关系,只有其中一个被填满。

所以在关系数据库中,这样做有意义吗?是否有更好,更有效的方式来定义这种关系?

1 个答案:

答案 0 :(得分:1)

你想要的是一个多态关联,遗憾的是,DataMapper不支持。尝试查看ActiveRecord;你可以轻松地将它与Sinatra一起使用。