我正在尝试查找指定属性不为空的记录。因为它是一个字符串,所以它在数据库中不是空的。
Post.where(:sourceurl != '')上面的方法看起来应该可以工作,但在source_url属性为空的情况下,我仍然会得到返回的记录。这样做的正确方法是什么?
发布于 2015-11-07 06:24:20
ActiveRecord (我认为是在Rails 3和4中)允许通过将数组作为参数传递来检查多个条件。因此,如果您想同时检查nil和'',您可以使用:
where(sourceurl: [nil, ''])这将生成SQL条件,如下所示:
(sourceurl IS NULL OR sourceurl = '')在Rails 4中,您可以使用.not检查负条件,因此对于原始问题,您可以这样做:
Post.where.not(sourceurl: [nil, '']).not有一点神奇之处,这使得它对纯SQL查询很有优势,因为它可以跨数据库工作,不会自动为空查询,以及这里解释的其他一些事情:where.not explained
https://stackoverflow.com/questions/11599587
复制相似问题