MongoId встроенный документ со ссылкой

У меня есть следующий случай, когда у меня есть документ, который мне нужно встроить в некоторые документы, но для прослеживаемости (например, необходимо знать количество людей, подписанных на каждый тип), мне нужно, чтобы он был сохранен как другой документ. Поэтому, когда я пытаюсь сохранить набор типов по умолчанию, он говорит:

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 ответа

Вы думали о наследовании?

Сделай свой Client а также Discount модели наследуются от Type,
Они выиграют от вашего Type поля, и вы сможете иметь автономный Type Индекс тоже.

Простой ответ заключается в том, что вы не можете создавать автономные документы для встроенной модели (вы архитектурно предотвращаете это, выбирая встраивание). Если вам нужно иметь отдельный набор типов, вы должны использовать has_many а также belongs_to вместо embeds_many а также embedded_in,

Другие вопросы по тегам