Ruby on Rails 2查询关联计数

时间:2011-06-24 21:46:07

标签: ruby-on-rails ruby activerecord

这个问题与[1]非常相似,只不过我使用的是Rails 2.3.5(是的,旧的)和一个完整的新版本。我有两个模型,Configfile和Signoff。

我想找到签收次数<&lt;的所有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] Rails 3 query on condition of an association's count

1 个答案:

答案 0 :(得分:2)

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

哪个应该与等效的rails3相同:

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