mongoid: обновить вложенные атрибуты

у меня возникла проблема с обновлениями вложенных атрибутов для ссылочных документов, которые не сохраняются

> 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, объявленный в пользовательской модели.

что необходимо для сохранения вложенных атрибутов, когда родительский документ уже сохранен?


person brewster    schedule 10.06.2011    source источник


Ответы (2)


Есть ли у вас в User классе следующее?

accepts_nested_attributes_for :profile

Если вам не хватает этой строки, я почти уверен, что она будет игнорировать все попытки обновить вложенные записи через родителя, используя update_attributes.

person theTRON    schedule 10.06.2011

оказывается, это монгоидная проблема. я отправляю запрос на вытягивание с неудачным тестом здесь https://github.com/mongoid/mongoid/pull/978 для тех, у кого возникла такая же проблема. я просто вручную сохраняю/обновляю вложенные записи, пока они не будут решены

person brewster    schedule 11.06.2011