首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Squeel中使用NOT运算符?

在Squeel中使用NOT运算符?
EN

Stack Overflow用户
提问于 2013-02-18 20:00:54
回答 2查看 249关注 0票数 3

如何使用Squeel编写SQL查询?

代码语言:javascript
复制
    SELECT * FROM documents where (NOT document.deleted OR document.deleted IS NULL)

我试过了:

代码语言:javascript
复制
    Document.where { (-deleted) | (deleted == nil) }

但是会出现这个错误:

代码语言:javascript
复制
    NoMethodError: undefined method `|' for deleted.-@:Squeel::Nodes::KeyPath
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-18 20:41:34

注意,ActiveRecord将布尔值作为字符串标志存储在数据库中,这一点非常重要。因此,在您提到的情况下,document.deleted等于'f',这是一个真实值。这就是为什么不能简单地使用NOT运算符。

也许你正在寻找的是:

代码语言:javascript
复制
Document.where { deleted.eq(false) | deleted.eq(nil) }

干杯

票数 2
EN

Stack Overflow用户

发布于 2013-02-18 20:40:04

NOT将反转返回的集合,因此您必须定义要比较的内容。

代码语言:javascript
复制
(-deleted) #there is nothing to reverse

根据你的评论,我认为你指的是deleted not equal true,所以:

代码语言:javascript
复制
Document.where { -(deleted == true) | (deleted == nil) }

然而,true的反转是false,对吗?所以,你可以说:

代码语言:javascript
复制
Document.where { (deleted == false) | (deleted == nil) }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14935812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档