게시물이있는 경우 해당 게시물을 업데이트하는 앱이 있습니다. 그렇지 않으면 게시물을 새로 만듭니다.몽고/몽고 이드는 모델을 만들지 만 모델을 업데이트하지 않습니다.
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'를 결과로 가져옵니다. –