首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用ActiveRecord使用OR子句进行查询的"Rails方式“是什么?

使用ActiveRecord使用OR子句进行查询的"Rails方式“是什么?
EN

Stack Overflow用户
提问于 2012-03-31 04:15:30
回答 4查看 491关注 0票数 1

我正在使用带有MySQL数据库的Rails3,并且我需要以编程方式创建如下查询:

代码语言:javascript
复制
select * from table where category_name like '%category_name_1%' 
OR category_name like '%category_name_2%'
(...snip...)
OR category_name like '%category_name_n%'

考虑到表的大小和项目范围(我认为最多500行),我觉得使用像thinking这样的东西有点过分了。我知道我可以简单地通过直接编写查询字符串来做到这一点,但是我想知道是否有一种ActiveRecord方法可以做到这一点。official guide上没有提到这一点,我已经搜索了很长一段时间,最后空手而归:

还有,有什么原因吗(也许是Rails的原因?)不包括OR子句?

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-03-31 05:03:19

假设您有一个带有类别名称的数组names

代码语言:javascript
复制
Model.where( names.map{"category_name LIKE ?"}.join(" OR "),
  *names.map{|n| "%#{n}%" } )
票数 7
EN

Stack Overflow用户

发布于 2012-03-31 05:31:56

你应该先用谷歌搜索,已经有答案了。先看here,然后看here,你会得到类似这样的结果:

代码语言:javascript
复制
accounts = Account.arel_table
Account.where(accounts[:name].matches("%#{user_name}%").or(accounts[:name].matches("%#{user_name2}%")))
票数 4
EN

Stack Overflow用户

发布于 2012-03-31 04:23:19

如果你看一下指南,他们的例子可以很容易地修改为:

代码语言:javascript
复制
Client.where("orders_count = ? OR locked = ?", params[:orders], false)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9949855

复制
相关文章

相似问题

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