3

我试图了解 mongoid 中的关系,但无法超越以下内容:

class Band
  include Mongoid::Document
  embeds_many :photos
end

class Photo
  include Mongoid::Document
  embedded_in :Band
end

在上面的代码中,Instructing Band to embed_many phtos 应该将完整的照片数据存储在 Band 内。但是,将 embedded_in 放入 Photo 类有什么必要?如果我们不把embedded_in放到Photo里面,会不会自动多态呢?

此外,查询是否会Photo.all获取嵌入在 Bands 中的照片?如果是,这是embedded_in的原因吗?一个类可以有多个embedded_in 吗?

4

1 回答 1

5

embedded_in需要调用才能将方法添加到类Photo,以便您可以访问嵌入照片的波段。就像您使用一样has_manybelongs_to虽然外键仅存储在具有belongs_to. 它还添加了检查照片是否持久化的方法等。是的,一个班级可以有多个embedded_in

Photo.all不会给你嵌入其他类的照片。通常,如果您只通过另一个模型访问模型,您会嵌入它。使用与外键的关系时,一次获取整个文档比再次往返数据库更便宜。因此,如果您需要类似的东西Photo.all,则不应嵌入Photo.

于 2013-03-25T18:39:48.320 回答