2010-12-17 50 views

回答

4

在Rails中没有类似的方法。

我认为,在一个做的还是最简单的方法WHERE子句是做这样的事情:如果你想了解阿雷尔方法(这确实有一个“或”方法)

User.where("first_name = ? OR last_name = ?", params[:first_name], "Wilson") 

,看这里:https://github.com/rails/arel#readme。使用阿雷尔和ActiveRecord的,你可以做同样的事情是这样的:

User.where(User.arel_table[:first_name].eq(params[:first_name]).or(User.arel_table[:last_name].eq('Wilson'))) 
+0

注到用户:您可以使用多个查询相同的列名做到这一点的方法/水溶液和为前“Model.where( '???=名称或名称= OR NAME =', '南卡罗来纳州',' South_Carolina”,‘南卡罗来纳州’“)等等......当然,你可以用其他方法处理这个问题,但是这一次将工作太 – 2012-07-27 01:38:03

2

你可以看看meta_where。这个gem允许在Ruby代码中使用更强大的ActiveRecord查询表达式,而不需要删除SQL碎片。

2

只需使用User.where(cond1) | User.where(cond2),在||由ruby保留!

+1

这是真的,这得到了相同的结果,但它实际上做两个SQL查询,并使用红宝石阵列组联合运算符([阵列#|](http://www.ruby-doc.org/core/classes/Array.html#M000275)),以将结果连接成一个阵列。您可以通过运行轨道控制台,并告诉它记录到STDOUT这样看到SQL查询:'的ActiveRecord :: Base.logger = Logger.new(标准输出)',然后键入'User.where(COND1)| User.where(COND2)'。 – dontangg 2011-06-24 20:30:26