首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Arel进行查询

使用Arel进行查询
EN

Stack Overflow用户
提问于 2013-03-20 21:43:47
回答 1查看 136关注 0票数 2

我正在使用rails,我有一个sql查询,我想用arel来完成。

代码语言:javascript
复制
"SELECT `people`.* FROM `peoples`  WHERE `peoples`.`home_id` = 289 AND (`people`.`created_at` BETWEEN '2013-03-12' AND '2013-03-15' AND (`people`.`first_name` LIKE '%jane%' OR `people`.`email` LIKE '%jane%'))"

现在,我已经用arel解决了查询问题,但我希望避免对必须匹配相同搜索变量的属性重复"matches("%#{ search }%")“。

代码语言:javascript
复制
a.where(a.arel_table[:created_at].in(date_range).and(a.arel_table[:first_name].matches("%#{search}%").or(a.arel_table[:email].matches("%#{search}%"))))

类似于:

代码语言:javascript
复制
a.where(a.arel_table[:created_at].in(date_range).and([:email, :first_name].each {|attr| or.(a.arel_table[:attr].matches("%#{search}%"))))

但这是行不通的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-24 20:34:39

问题是条件看起来像(c1或c2)或c3)或c4),但它似乎是阿雷尔的“或”的概念是二进制的。

所以不可能将它们定义为(c1或c2或c3或c4)。

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

https://stackoverflow.com/questions/15525288

复制
相关文章

相似问题

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