2011-06-24 36 views
0

この質問は、私がRails 2.3.5(はい、古い)と完全なnewbをRoRで使っている点を除いて、[1]とかなり似ています。 ConfigfileとSignoffという2つのモデルがあります。Ruby on Rails 2の関連カウントに関するクエリ

サインオフの回数が<であるすべてのConfigfilesを検索したい2もちろん、私は手動で配列をフィルタリングすることでこれを行うことができますが、このデータベースは大きく、かなり遅いです。

class Configfile < ActiveRecord::Base 
    belongs_to :computer 
    has_many :signoffs, 
      :dependent => :destroy 
end 

class Signoff < ActiveRecord::Base 
    belongs_to :configfile 
end 

これはRailsの中で行うのはかなり簡単なはずの何かのように思えるが、私はそれを把握することはできません。 私のクエリはこれまでのように見えますが、サインオフの数で制限するための何かを得ていません。

configs = c.configfiles.find(:all, 
          :include => :signoffs, 
          :order => 'filename') 

[1]と等価​​rails3とあなたに同じを与えるべきRails 3 query on condition of an association's count

答えて

2
Configfile.find(:all, :group=>"configfile_id", :joins=>:signoffs, :having=>"count(*) < 2") 

 
Configfile.joins(:signoffs").group("configfiles.id").having("count_all < 2").count(:all) 

+0

はどうもありがとうございました!私が働いていた最終的な解決策は、 'configfiles.find(:all、:group =>" configfile_id "、:joins =>:signoffs、:having =>" COUNT(*)<2 ")' (count_all COUNT(*)と.count to .find) –

+0

私は自分の答えを編集しました。 – klochner

関連する問題