活动记录 delete_all 问题,字段为空

Active record delete_all issue with empty field

我的课程模型有一个名为 user_ids 的字段,它是一个 ObjectId 数组。

我正在尝试查找所有非空 user_ids 的课程,并且只取消设置 user_id 字段。

list = Course.where({ :user_ids.nin => [[], nil] })
list.each do |course|
  course.user_ids = []
  course.save 
end

然而,我似乎总是得到两门课程:

"user_ids" : [ ObjectId("560dc9998b3c5b003f000000") ]

我的查询有误吗?感谢任何帮助。

我想你想使用 where.not 方法。

Course.where.not(user_ids: [[], nil])

You can read more about where.not here

您的原始查询不起作用的原因是您试图在 :user_id 交易品种上调用 .nin 方法,这不是交易品种可以接受的方法。