如何在Rails 3 ActiveRecord中进行OR查询。我找到的所有示例都只有AND查询。
Edit: OR方法从Rails 5开始可用。看到ActiveRecord:: QueryMethods
如何在Rails 3 ActiveRecord中进行OR查询。我找到的所有示例都只有AND查询。
Edit: OR方法从Rails 5开始可用。看到ActiveRecord:: QueryMethods
当前回答
只要在条件中添加一个OR
Model.find(:all, :conditions => ["column = ? OR other_column = ?",value, other_value])
其他回答
我想添加这是一个解决方案搜索一个ActiveRecord的多个属性。自
.where(A: param[:A], B: param[:B])
会搜索A和B。
Rails 5附带了一个or方法。(链接到文档)
该方法接受ActiveRecord::Relation对象。例如:
User.where(first_name: 'James').or(User.where(last_name: 'Scott'))
只要在条件中添加一个OR
Model.find(:all, :conditions => ["column = ? OR other_column = ?",value, other_value])
使用activerecord_any_of gem,您可以编写
Book.where.any_of(Book.where(:author => 'Poe'), Book.where(:author => 'Hemingway')
如果你想在一个列的值上使用OR操作符,你可以传递一个数组到.where, ActiveRecord将使用IN(value,other_value):
Model.where(:column => ["value", "other_value"]
输出:
SELECT `table_name`.* FROM `table_name` WHERE `table_name`.`column` IN ('value', 'other_value')
这应该在单个列上实现与OR相同的效果