请考虑以下事项:
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
我不需要图片来了解Dog
或Cat
。这可能吗?
答案 0 :(得分:1)
如果你把belongs_to :picture
放在你的狗和猫类中,我相信你可以这样做。具有belongs_to
的关系的一侧是将存储外键的一侧。这会在picture_id
和Dog
中分别设置Cat
字段,而不必为您要在{{1}上链接的每种类型的想法存储whatever_id
}。class。
答案 1 :(得分:0)
不,不是。您需要cat_id
或dog_id
或某些多态obj_id
来存储有关此图片归属的信息。
或者你怎么知道图片属于现在的狗还是猫?