2011-08-02 35 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.