Fal*_*lko 2 ruby ruby-on-rails
我正在查询 Active Record 并希望将两个查询链接在一起。
我的问题是,当我想返回那些属性不为零的记录时,它不会返回我知道存在的任何记录:
user.change_requests.where("action_at = ?", req.action_at).where("cancelled_at != ?", nil)
Run Code Online (Sandbox Code Playgroud)
这基本上返回一个空数组,但我期望一个数组change_requests
小智 5
麦克斯在上面的评论中给出了正确的答案。where.not编写sql时可以使用ActiveRecord语法NOT。
2.4 NOT 条件
NOT SQL 查询可以通过以下方式构建
where.not:
Client.where.not(locked: true)换句话说,可以通过调用不带参数的 where 来生成此查询,然后立即链接而不传递 where 条件。这将生成如下 SQL:
SELECT * FROM clients WHERE (clients.locked != 1)
对于您的具体情况,代码如下所示:
user.change_requests.where(action_at: req.action_at).where.not(cancelled_at: nil)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1138 次 |
| 最近记录: |