2015-02-18 7 views
1

У меня есть следующий случай, когда у меня есть документ, который мне нужно встроить в некоторые документы, но для отслеживания (например, нужно знать количество людей, подписавшихся на каждый тип). Мне нужно это для храниться как другой документ. Так что, когда я пытаюсь сохранить стандартный набор типов он говорит:Встроенный документ 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 

ответ

0

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

0

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

Внесите Client и Discount модели наследуйте от Type.
Они получат выгоду от ваших полей Type, и вы сможете также иметь автономный индекс Type.

+0

Я подумаю об этом, это звучит неплохо, спасибо – sescob27

Смежные вопросы