加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 我可以使用AREL / ActiveRecord更优雅地编写此查询吗?

发布时间:2020-12-17 03:59:31 所属栏目:百科 来源:网络整理
导读:我可以使用AREL / ActiveRecord API更短和/或更优雅地编写此查询吗? Foo.where("(bar is not null and bar != '') or (baz is not null and baz !='')") 解决方法 您可以直接使用Arel执行OR运算符,但语法不是很漂亮,并且可能有点难以阅读.这是它在arel中的
我可以使用AREL / ActiveRecord API更短和/或更优雅地编写此查询吗?

Foo.where("(bar is not null and bar != '') or (baz is not null and baz !='')")

解决方法

您可以直接使用Arel执行OR运算符,但语法不是很漂亮,并且可能有点难以阅读.这是它在arel中的样子:

foo  = Foo.arel_table
Foo.where(foo[:bar].not_eq(nil).and(foo[:bar].not_eq('')).or(foo[:baz].not_eq(nil).and(foo[:baz].not_eq(''))))

我建议看看这个吱吱声的宝石.它使您可以访问活动记录中的更多arel功能.您的查询需要:

Foo.where{(bar.not_eq nil) & (bar.not_eq '') | (baz.not_eq nil) & (baz.not_eq nil)}

这是更多信息的链接:http://erniemiller.org/projects/squeel/

有一些不同的方法你可以用吱吱声写出来,它支持一些不同的语法风格,所以如果你不喜欢上面那个有替代品.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读