这个问题与[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')
答案 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)