Mongoid Relations 1 .. *

时间:2011-08-11 20:19:58

标签: ruby mongoid

请考虑以下事项:

class Picture
  include Mongoid::Document

  field :data, :type => String
end

class Cat
  include Mongoid::Document

  has_one :picture, :autosave => true
  field :name, :type => String
end

class Dog
  include Mongoid::Document

  has_one :picture, :autosave => true
  field :name, :type => String
end

现在,是否可以执行以下操作:

dog = Dog.new
dog.picture = Picture.new
dog.save!

无需将Picture类编辑为以下内容:

class Picture
  include Mongoid::Document

  belongs_to :cat
  belongs_to :dog
  field :data, :type => String
end

我不需要图片来了解DogCat。这可能吗?

2 个答案:

答案 0 :(得分:1)

如果你把belongs_to :picture放在你的狗和猫类中,我相信你可以这样做。具有belongs_to的关系的一侧是将存储外键的一侧。这会在picture_idDog中分别设置Cat字段,而不必为您要在{{1}上链接的每种类型的想法存储whatever_id }。class。

答案 1 :(得分:0)

不,不是。您需要cat_iddog_id或某些多态obj_id来存储有关此图片归属的信息。

或者你怎么知道图片属于现在的狗还是猫?