首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >属性不为空的Ruby on Rails ActiveRecord

属性不为空的Ruby on Rails ActiveRecord
EN

Stack Overflow用户
提问于 2012-07-22 18:42:46
回答 6查看 24.1K关注 0票数 22

我正在尝试查找指定属性不为空的记录。因为它是一个字符串,所以它在数据库中不是空的。

代码语言:javascript
复制
Post.where(:sourceurl != '')

上面的方法看起来应该可以工作,但在source_url属性为空的情况下,我仍然会得到返回的记录。这样做的正确方法是什么?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-07-22 20:27:05

尝尝这个

代码语言:javascript
复制
Post.where("sourceurl <> ''")
票数 31
EN

Stack Overflow用户

发布于 2015-11-07 06:24:20

ActiveRecord (我认为是在Rails 3和4中)允许通过将数组作为参数传递来检查多个条件。因此,如果您想同时检查nil'',您可以使用:

代码语言:javascript
复制
where(sourceurl: [nil, ''])

这将生成SQL条件,如下所示:

代码语言:javascript
复制
(sourceurl IS NULL OR sourceurl = '')

在Rails 4中,您可以使用.not检查负条件,因此对于原始问题,您可以这样做:

代码语言:javascript
复制
Post.where.not(sourceurl: [nil, ''])

.not有一点神奇之处,这使得它对纯SQL查询很有优势,因为它可以跨数据库工作,不会自动为空查询,以及这里解释的其他一些事情:where.not explained

票数 41
EN

Stack Overflow用户

发布于 2014-09-19 10:44:34

Rails 4

活动记录条件:

代码语言:javascript
复制
where.not(value: '')

范围:

代码语言:javascript
复制
scope :myscope, -> { where.not(value: '') }
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11599587

复制
相关文章

相似问题

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