Mongoid удаления вложенных документов не сохраняется - PullRequest
3 голосов
/ 02 апреля 2012

Я часами сталкиваюсь с проблемой и гуглю себя бессмысленно.

У меня есть модель Mongoid со встроенным документом, например:

embeds_many :tags, :as => :taggable

Почему-топопытка удалить этот документ работает в консоли, но затем документы возвращаются после перезагрузки.Я пробовал следующее:

model.tags.delete_all

model.tags.each do |tag|
  tag.delete
end

model.tags.destroy_all

После всего вышесказанного я могу подтвердить, что model.tags возвращает пустой массив.Тогда, чтобы быть в безопасности, я даже называю model.save.Если я перезагружаю модель, возвращаются все встроенные теги.

Как правильно удалить встроенные документы с помощью Mongoid?

1 Ответ

7 голосов
/ 02 апреля 2012

Ну, это очень просто, но сложно ...

Когда вы удаляете теги, вам необходимо перезагрузить родительский объект.

Код

model.tags.delete_all
model.reload

 model.tags.each do |tag|
  tag.delete
 end
 model.reload

model.tags.destroy_all
model.reload

Таким образом, ваша модель будет перезагружена, и вы получите правильный объект

...