首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Arel:如何用arel语言写attr = NULL?

Arel:如何用arel语言写attr = NULL?
EN

Stack Overflow用户
提问于 2012-10-25 19:27:04
回答 2查看 1.6K关注 0票数 3

我有一个关于Arel的问题:我想使用Arel强制类似于"attr = NULL“的东西。Arel允许我这样做:

代码语言:javascript
复制
table = obj.arel_table # obj has attr
table[:attr].eq(nil) # returns ''objs'.'attr' IS NULL'

这是公平的,因为在查询中这是正确的做法。但是在更新时,我希望能够将某些内容设置为NULL,并且最好不用自己编写SQL (来自AR的update_all不支持集合上的ARel类功能: objs.things.update_all(:created_at => nil)。这会中断)。我基本上是尝试在递归到arel和to_sql函数的update_all调用中执行代码块。这是可能的吗?

EN

回答 2

Stack Overflow用户

发布于 2021-12-06 15:32:51

您只需要将nil传递给eq

代码语言:javascript
复制
table[attr].eq(nil)

它会生成where attr is not null

票数 1
EN

Stack Overflow用户

发布于 2019-03-15 20:20:45

我知道要做这样的事情的唯一方法是使用SqlLiteral,类似于:

代码语言:javascript
复制
table[attr].eq(Arel::Nodes::SqlLiteral.new("NULL"))

这将迫使arel跳过nil的处理器,并创建一个简单的相等

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13067573

复制
相关文章

相似问题

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