2014-08-31 4 views
0

mongoid에 포함 된 개체를 업데이트하려고하는데 터미널에서 true로 표시되지만 변경 내용이 데이터베이스에 유지되지 않습니다. 내가 포함 된 개체 중 하나 개의 값을 변경하려고하면 mongoid에 포함 된 개체를 업데이트하거나 파기 할 수 없습니다.

는 RuntimeError에 말한다 명령

a = Post.first 
b = Category.last 
a.category = b 
b.save <-- return true but no persist on db 

입니다 : 냉동 BSON :: 문서를 수정할 수 없습니다.

a.category.name = "test" <-- return RuntimeError: can't modify frozen BSON::Document. 

아이디어가 있으십니까? 나는 mongoid 4.0

포스트를 사용하고 있습니다 :

class Post 
    include Mongoid::Document 

    field :name, type: String 
    field :intro, type: String 
    field :content, type: String 

    embeds_one :category 

카테고리 : 같은 당신은 대신 B의 변수를 저장해야

class Category 
    include Mongoid::Document 

    field :name, type: String 

감사합니다,

+0

'Post'와'Category'는 어떻게 생겼습니까? 임베디드 오브젝트는 Mongoid 비트로 싸여있는 '해시 (Hash)'필드 (또는 배열) 일 뿐이므로 임베디드 오브젝트 자체를 저장하는 것은 의미가 없으므로 부모를 저장해야합니다. –

+0

첫 번째 게시물에 게시물 및 카테고리 모델이 추가되었습니다. 부모를 구하기 위해 무엇을 말합니까? 고맙습니다 – Kerm1t

답변

0
a = Post.first 
b = Category.last 
a.category = b 
b.save <-- return true but no persist on db 

를 :

a.categor y = b

a.save #이 것은 카테고리 ID를 게시하도록 저장합니다.

이제

a.category.name = "test" 

가 작동합니다.

관련 문제