如何在Rails 3 ActiveRecord中执行OR查询.我找到的所有例子都有一些问题和疑问.

编辑:OR方法从Rails 5开始就可用.见ActiveRecord::QueryMethods

推荐答案

使用ARel

t = Post.arel_table

results = Post.where(
  t[:author].eq("Someone").
  or(t[:title].matches("%something%"))
)

由此产生的SQL:

ree-1.8.7-2010.02 > puts Post.where(t[:author].eq("Someone").or(t[:title].matches("%something%"))).to_sql
SELECT     "posts".* FROM       "posts"  WHERE     (("posts"."author" = 'Someone' OR "posts"."title" LIKE '%something%'))

Ruby-on-rails相关问答推荐

在URL中将下划线更改为连字符Ruby on Rails

select2 未应用于所有下拉列表;它只适用于数据的最后一条记录

计算总价(商品数量*商品价格)

来自控制台的 ActionCable.server.broadcast

如何使用 RSpec 和 Devise/CanCan 进行集成测试?

如何使用 Vim 插入 ERB 标签?

在 Epoch 中将 Ruby 时间戳转换为秒数并返回

搭建脚手架时建立关系

了解 Rails 验证:allow_blank 有什么作用?

DateTime.now 还是 Time.now?

不带参数的 request.fullpath

Rails data-disable-with re-enable 按钮

通过字符串获取 ActiveRecord 对象的属性

设计自定义路由和登录页面

counter_cache 实现的问题

如何在 Rails 中设置路由的默认格式?

为什么 Google Oauth 在我的 Rails 应用程序中返回无效的 redirect_urI?

在 Rails 中,在特定时区创建特定时间(不是现在)的最佳方式是什么?

使用 ActiveRecord 获取列名

如何创建一个 ruby​​ Hello 世界?