2010-03-06 73 views
2

我有三个型号:轨高级查找

class Address < ActiveRecord::Base 
has_many :jobs 
end 

class Category < ActiveRecord::Base 
    has_many :jobs, :dependent => :destroy 
end 

class Job < ActiveRecord::Base 
belongs_to :category 
belongs_to :address 
end 

我试图获得该职位已ADDRESS_ID所有类别= NULL 我几乎没有做:

categories = Category.find(:all,:joins=>:jobs,:conditions=>'jobs.address_id is not null') 

的问题是我有很多重复的类别。我可以解决它做一个:

categories.uniq!

但并不完全是最好的解决方案..任何想法?

回答

2

你的意思是你有不同的类别与相同的类别名称?如果是的话,你可以试试这个:

categories = Category.find(:all,:joins=>:jobs, 
      :conditions=>'jobs.address_id is not null', :group => "category.name") 

注:如果有几类具有相同的名称,你会得到其中的一个。您无法控制返回给您的特定行。

+0

我必须检查结果,但至少你是在正确的方向。 – 2010-03-07 08:38:22