我的课程模型有一个名为user_ids的字段,它是一个ObjectIds数组。
我正在尝试使用非空user_id查找所有课程,并且仅取消设置user_id字段。
list = Course.where({ :user_ids.nin => [[], nil] })
list.each do |course|
course.user_ids = []
course.save
end
但是,我似乎总是得到两门课程:
"user_ids" : [ ObjectId("560dc9998b3c5b003f000000") ]
我的查询错了吗?任何帮助表示赞赏。
答案 0 :(得分:1)
我认为你想使用where.not
方法。
Course.where.not(user_ids: [[], nil])
You can read more about where.not
here
原始查询无效的原因是您尝试在.nin
符号上调用:user_id
方法,这不是符号可以接受的方法。