невозможно выполнить несколько встраиваний после обновления mongoid

#ruby-on-rails #mongoid

#ruby-on-rails #mongoid

Вопрос:

Недавно я обновил mongoid до версии 6.x. В одном из моих тестов rspec я сохранял встроенные документы, используя это соглашение:

 parent.children.push(child1, child2, child3, etc...)
 

В этом случае как родительская, так и дочерняя модели имеют обратные вызовы after_update. Это работало нормально, но после обновления mongoid я теперь получаю:

 NoMethodError (undefined method `call' for #<ActiveSupport::Callbacks::CallbackSequence:0x00007fcde9684c00>)
 

Если я изменю тест на выполнение отдельных нажатий, он будет работать нормально, т.е.:

 parent.children.push(child1)
parent.children.push(child2)
etc...
 

Я довольно долго искал вокруг, но до сих пор не нашел ничего, связанного с этим. Я просто «делаю это неправильно»?

Комментарии:

1. попробуйте parent.push(childrens: [child1, child2, child3])

Ответ №1:

Я попробовал parent.push(childrens: [...]) , как было предложено, что привело к этой ошибке:

 NoMethodError: undefined method `bson_type' for #<Child:0x00007fd7073ce520>
from /mongoid-6.1.1/lib/mongoid/attributes/dynamic.rb:137:in `method_missing'
 

Ответ №2:

Похоже, это могло быть проблемой с версией Mongoid. Я не понимал, что сейчас это до версии 7. Я обновился до последней версии 7.0.2, и эта проблема, похоже, решена.

Комментарии:

1. сталкивались ли вы с какими-либо другими проблемами после обновления до версии 7.0.2? Я также планирую обновить свой проект.