2014-08-31 46 views
0

我试图更新mongoid上的嵌入对象和终端说真,但更改不会持久数据库上。无法更新或销毁mongoid上的嵌入对象

这是命令

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

当我试图改变嵌入对象的一个​​单值RuntimeError说:不能修改冻结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 

类别:

class Category 
    include Mongoid::Document 

    field :name, type: String 

问候,

+0

“Post”和“Category”是什么样的?请记住,嵌入对象实际上只是包含在一些Mongoid中的'Hash'字段(或它们的数组),所以单独保存嵌入对象是没有意义的,您必须保存父对象。 – 2014-08-31 17:39:04

+0

添加帖子和类别模型以首先发布。你是指什么保存家长?谢谢 – Kerm1t 2014-08-31 17:56:25

回答

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

你应该保存可变的,而不是B,这样的:

a.categor y = b

a.save #this将保存要发布的类别ID。

而现在,

a.category.name = "test" 

会工作。