#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? Я также планирую обновить свой проект.