2011-08-02 4 views
0

1つの条件を持つ行の合計数を取得する1つのクエリと、同じ条件と別の条件を持つ行の合計数を取得する2つ目のクエリがあります。理想的には、私はコード内で自分自身を繰り返すことはなく、代わりに最初のクエリに余分な条件を連結/作成することができます。Rails 2でクエリを作成/チェーンするにはどうしたらいいですか?

私はこのようなことを考えています。

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

また、それは私が実際に現時点で何をしようとしているだから、これは、Table.countユースケースのためにどのように見えるかを調べるためにいいと思います。

私はActiveRecordの::ベースはそれを実行するとは対照的に、クエリオブジェクトを返しますいくつかの方法があることを推測しているが、私は見つかっていないドキュメントでいます。

答えて

2

Railsは3は、これが大幅に容易になり、あなたは常にそれをエミュレート少しハックとRailsの2でそれを行うことができますが:

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

あなたは、前方互換性のある方法で、チェーン一緒に複数の条件ことができますこの方法をレールとの3:それはRailsのよりもはるかに柔軟である理由

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

のRails 3は、それはですので、SQL計算のほとんどを行うためにARELを使用しています。2.

関連する問題