Tranquiliste a écrit :
> Bonjour,
> 
> J'aimerai un conseil sur l'optimisation de code. J'ai plusieurs
> modèles
> 
> building
>  has_many roles
> 
> role (qui porte aussi le type de role, admin, proprio,
> locataire, ...)
> belongs_to building
> belongs_to user
> 
> user
> has_many roles
> 
> Et j'ai un certain nombre de methodes qui ressemblent à :
> 
> def find_admins_of
>   roles = self.roles
>  admins = []
>  for role in roles
>    admins << User.find(role.user_id) if role.role_type_id ==
> Role::ADMIN
>  end
> admins
> end
> 
> J'ai bien conscience que ce n'est sans doute pas la meilleure méthode,
> car beaucoup de requêtes sont générées. J'ai pensé à faire un
> has_many, through
> mais je n'arrive pas à trouver le bonne syntax pour mettre la
> condition sur le role.role_type_id (sur le model role)

Si j'ai bien compris ton modèle role est entre building et user.
Je dirai qu'il te faut quelquechose dans le genre:

class Building < ActiveRecord::Base
   has_many :roles

   has_many :admins, :through => :roles, :source => :user,
            :conditions => { :roles => { :role_type_id => Role::ADMIN } }
end


-- 
Martin Catty || fuse
http://www.noremember.org


--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de 
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse 
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse 
[email protected]
-~----------~----~----~----~------~----~------~--~---

Répondre à