活动记录 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
方法,这不是交易品种可以接受的方法。
我的课程模型有一个名为 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
方法,这不是交易品种可以接受的方法。