2010-03-06 4 views
2

J'ai trois modèles:rails AVANCÉERechercher

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 

Je suis en train de faire toutes les catégories que les emplois a ADDRESS_ID = NULL que je fais presque là:

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

la Le problème est que j'ai beaucoup de catégories répétées. Je peux le résoudre en faisant un:

catégories.uniq!

mais n'est pas exactement la meilleure solution .. Une idée?

Répondre

2

Voulez-vous dire que vous avez différentes catégories avec le même nom de catégorie? Si oui, vous pouvez essayer ceci:

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

Note: S'il existe plusieurs catégories avec le même nom que vous obtiendrez l'un d'eux. Vous n'avez aucun contrôle sur la ligne spécifique qui vous est retournée.

+0

Je dois revoir les résultats, mais au moins vous étiez dans la bonne direction. –