Activerecord加入搜索

时间:2010-04-17 11:22:23

标签: ruby-on-rails 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 个答案:

答案 0 :(得分:1)

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

需要分组以避免重复,而联接确保仅选择具有作业的类别。