如何在Rails 3 ActiveRecord中进行OR查询。我找到的所有示例都只有AND查询。

Edit: OR方法从Rails 5开始可用。看到ActiveRecord:: QueryMethods


当前回答

你可以这样做:

Person.where("name = ? OR age = ?", 'Pearl', 24)

或者更优雅一点,安装rails_or gem并像这样做:

Person.where(:name => 'Pearl').or(:age => 24)

其他回答

我想添加这是一个解决方案搜索一个ActiveRecord的多个属性。自

.where(A: param[:A], B: param[:B])

会搜索A和B。

Rails最近将其添加到ActiveRecord中。它将在Rails 5中发布。已致力于掌握:

https://github.com/rails/rails/commit/9e42cf019f2417473e7dcbfcb885709fa2709f89

Post.where(column: 'something').or(Post.where(other: 'else'))

# => SELECT * FROM posts WHERE (column = 'something') OR (other = 'else)

只要在条件中添加一个OR

Model.find(:all, :conditions => ["column = ? OR other_column = ?",value, other_value])

Rails 5附带了一个or方法。(链接到文档)

该方法接受ActiveRecord::Relation对象。例如:

User.where(first_name: 'James').or(User.where(last_name: 'Scott'))

使用activerecord_any_of gem,您可以编写

Book.where.any_of(Book.where(:author => 'Poe'), Book.where(:author => 'Hemingway')