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

#ruby-on-rails #mongoid #persistence

#ruby-on-rails #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_attributes/сохранить все вложенные изменения не сохраняются.
я attr_accessible :profile_attributes объявил в пользовательской модели.

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

Ответ №1:

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

 accepts_nested_attributes_for :profile
  

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

Ответ №2:

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