2011-08-02 40 views
0

我有一個查詢獲取具有一個條件的行的總數,第二個查詢獲取具有相同條件的行的總數加上另一個條件。理想情況下,我不會在代碼中重複自己,而只是將附加條件鏈接/組合到第一個查詢上。如何在Rails 2中撰寫/鏈接查詢?

我在想這樣的事情。

query1 = Table.find(:all, :conditions => "condition1") 
query2 = query1.find(:all, :conditions => "condition2") 

這也將會是好的找出這個樣子的Table.count使用情況,因爲這就是我實際上是想在此刻做。

我猜測ActiveRecord :: Base有一些方法會返回查詢對象而不是執行它,但我沒有在文檔中找到它。

回答

2

雖然Rails 3中,使這個顯著更容易,你可以隨時與模仿小黑客做到在Rails的二:

# config/initializers/rails2_where_scope.rb 
class ActiveRecord::Base 
    named_scope :where, lambda { |conditions| { 
    :conditions => conditions 
    }} 
end 

這種方式,您可以鏈接在一起的方式,多條件是向前兼容使用Rails 3:

query2 = Table.where(condition1).where(condition2).all 

Rails 3中使用AREL做大部分的SQL計算的所以這就是爲什麼它更比Rails更靈活2.