mongoid 4.0.2
我有INPC(AllOptionsSet)
课程:
Test
然后我这样做:
class Test
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::Paranoia
field :successful, type: Boolean, default: false
default_scope ->{ where(successful: true) }
end
所以这就是问题:这种行为背后的原因是什么?
P.S。我已修复它在t=Test.new; t.successful
=> true
方法的帮助下重置successful
。
答案 0 :(得分:1)
尝试调用Test.create(),成功也是如此。这看起来很奇怪,但想想你在default_scope中说的话......得到所有真实的测试。
这看起来像是来自active_record的内容:rails3 default_scope, and default column value in migration然而严格遵循active_record这应该有效,但它没有:
stateA.list
在mongo世界中,如果你使用default_scope,它将使用该范围对所有对象进行范围化,并假设您希望任何新的对象具有相同的默认值。解决方法是使用回调。你提到连接after_initialize这是一个不错的选择,但是你需要确保检查它是否已经实际设置。另一种方法是使用命名范围而不是默认范围。