У меня есть приложение, которое обновляет сообщение, если оно существует, в противном случае оно создает новое. Этот пост содержит вложенные документы:
class Post
embeds_one :tag, :as => :taggable, :class_name => 'TagSnippet'
end
class TagSnippet
include Mongoid::Document
field :name
embedded_in :taggable, polymorphic: true
end
Сообщение обновляется в контроллере следующим кодом:
@post = Post.where(--some criteria which work--).first
if @post
@post.attributes = params
else
@post = Post.new(params)
end
@post.save!
Этот код запускает и обновляет не встроенные документы, но не обновляет встроенные документы. Как ни странно, когда я отлаживаю в Rubymine, все атрибуты @post
меняются соответствующим образом (включая встроенные), но независимо от того, база данных не обновляется.
Это указывает на то, что это какая-то проблема с монго или монгоидом, но откат монго и монгоидных камней не принес изменений.