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]
-~----------~----~----~----~------~----~------~--~---