带引用的MongoId嵌入式文档

时间:2015-02-18 03:21:12

标签: ruby-on-rails ruby ruby-on-rails-4 mongoid mongoid3

我有以下情况,我有一个文档,我需要在一些文档中嵌入,但为了可追溯性(例如需要知道订阅每种类型的人数)我需要将它存储为不同的文献。因此,当我尝试保存一组默认类型时,它会说:

Mongoid::Errors::NoParent: Problem: Cannot persist embedded document Type without a parent document.

我不知道该怎么做或如何处理这种情况,我们非常感谢任何帮助或建议。

class Type
  include Mongoid::Document
    embedded_in :typeable, polymorphic: true
    belongs_to :client
    field :count, type: Integer # number of people interested in each Type
end

class Client
  include Mongoid::Document
    has_many :types
    embeds_many :discounts, as: :discountable
end

class Discount
  include Mongoid::Document
    embeds_many :types, as: :typeable
    embedded_in :discountable, polymorphic: true
end

2 个答案:

答案 0 :(得分:0)

简单的答案是,您无法为嵌入式模型创建独立文档(您在架构上通过选择嵌入来防止这种情况)。如果您需要一组独立的类型,则应使用has_manybelongs_to代替embeds_manyembedded_in

答案 1 :(得分:0)

你有没有想过继承?

ClientDiscount模型继承自Type 他们将从您的Type字段中受益,您也可以拥有独立的Type索引。