3
投稿があればそれを更新するアプリがあります。それ以外の場合は新しいものを作成します。この投稿は、埋め込まれた文書が含まれていますMongo/Mongoidはモデルを作成しますが、モデルを更新しません
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
のすべての属性が適切に変更されます(組み込みのものを含む)が、データベースは更新されません。
これはいくつかのモンゴーまたはモンゴイデの問題ですが、モンゴーとモンゴイドの宝石を巻き戻しても変化はありません。
私は実際にmongoidのembeds_one/embedded_inを使用しましたが、私はそれを反映するために私の答えを更新しました。迅速な返信をありがとう! –
とにかく、私の理論がまだ成立しているかどうかを確認してください。 –
'@ post.tag_changed?'はエラーになります。 '@ post.tag.name_changed?'は 'true'になります。そうすれば、それは他のものかもしれません。 –