2010-12-17 51 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