mongoid:更新嵌套属性

时间:2011-06-10 03:20:17

标签: ruby-on-rails mongoid persistence

我遇到的问题是对引用文档的嵌套属性的更新没有被保留

> u = User.first
 => #<User...
> u.changes
 => {} 
> u.profile.changes
 => {} 
> u.attributes = {:profile_attributes => {:weight => 8}}
 => {:profile_attributes=>{:weight=>8}} 
> u.changes
 => {} 
> u.profile.changes
 => {"weight"=>[14.0, 8.0]} 
> u.update
 => true 
> u.shipping_profile.changes
 => {"weight"=>[14.0, 8.0]}

update / update_attributes / save all不会保留嵌套的更改。 我在用户模型中声明了attr_accessible :profile_attributes

当父文档已经保留时,嵌套属性需要保留什么?

2 个答案:

答案 0 :(得分:0)

您的User课程中是否有以下内容?

accepts_nested_attributes_for :profile

如果你错过了这一行,我很确定它会忽略所有使用update_attributes通过父级更新嵌套记录的尝试。

答案 1 :(得分:0)

发现它是一个mongoid问题。对于有同样问题的其他人,我在https://github.com/mongoid/mongoid/pull/978提交失败测试的拉取请求。我只是手动保存/更新嵌套记录,直到其解决