2010-04-17 60 views
-1

我有兩個型號:的ActiveRecord加入搜索

class Category 
has many :jobs 
end 

class Job 
belongs_to :category 
end 

所以對於相信我能夠做到

c = Category.first 
c.jobs 

我的問題是:我如何才能找到剛剛類別至少有一個工作?

我只是忘了今天要加我正在執行它想:

Category.find(:all).collect { |x| x if x.jobs.size > 0 } 

它的工作原理,但我敢肯定這是不是最佳的。

回答

1
Category.find(:all, :joins => :jobs, :group => :id) 

需要分組來避免重複,而加入則確保只選擇具有作業的類別。