我最近将mongoid更新为6.x。在我的一项rspec测试中,我使用以下约定来保留嵌入式文档:
parent.children.push(child1, child2, child3, etc...)
在这种情况下,父模型和子模型都具有after_update回调。一切正常,但是在升级蒙古包之后,我得到了:
NoMethodError (undefined method `call' for #<ActiveSupport::Callbacks::CallbackSequence:0x00007fcde9684c00>)
如果我更改测试以进行单独的推送,则效果很好,即:
parent.children.push(child1)
parent.children.push(child2)
etc...
我已经搜索了很多,但是还没有找到与此相关的任何内容。我是“做错了”吗?
答案 0 :(得分:0)
我按照建议尝试了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'
答案 1 :(得分:0)
看起来类似的Mongoid版本可能存在问题。我不知道现在到了v.7。我更新到了最新的7.0.2,并且此问题似乎已解决。