活动记录delete_all问题与空字段

时间:2016-03-17 22:49:27

标签: ruby activerecord activemodel

我的课程模型有一个名为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") ]

我的查询错了吗?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

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

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

You can read more about where.not here

原始查询无效的原因是您尝试在.nin符号上调用:user_id方法,这不是符号可以接受的方法。