我正在查询active Record,并希望将两个查询链接在一起。
我的问题是,当我想返回属性为nil的那些记录时,它不会返回我知道存在的任何记录:
user.change_requests.where("action_at = ?",req.action_at).where("cancelled_at != ?",nil)
这基本上返回一个空数组,但是我期望一个change_requests
Max在上面的评论中有正确的答案。编写SQL where.not
时可以使用ActiveRecord NOT
语法。
2.4 NOT条件
where.not
不能建立SQL查询:
Client.where.not(locked: true)
换句话说,此查询可以是 通过调用不带参数的where生成,然后立即链接 没有通过条件的地方。这将生成如下所示的SQL:
SELECT * FROM clients WHERE (clients.locked != 1)
对于您的特定情况,代码如下:
user.change_requests.where(action_at: req.action_at).where.not(cancelled_at: nil)