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) Merci de votre aide Nicolas
on 2009-06-26 11:45
on 2009-06-26 12:07
Salut, sans rentrer dans les détails spécifiques de ton problème... Mais lorsque j'ai du code qui se répète dans les modèles, je crée un plugin ActiveRecord tout simplement. Style acts_as_machin, has_a_machin, etc. Au début ça me faisait peur de créer des plugins, c'est plus le cas désormais :). Ça permet déjà de DRY-ifier un peu le code en attendant de l'optimiser davantage. Nicolas (Novelys). 2009/6/26 Tranquiliste <nicolas.aguttes@googlemail.com>:
on 2009-06-26 13:23
>>
for role in roles
admins << User.find(role.user_id) if role.role_type_id ==
Role::ADMIN
Tu pourrais pas faire un truc genre :
admins = User.all( :condition => ['role.role_type_id = ?', Role::ADMIN
],
:include => :role ]
BTW : role_type ils fait aussin l'objet d'une table ?
Je réserverai le suffixe "_id" pour les foreign keys sinon
my 2 cents ;-)
--
IciMarché fédère l'e-commerce de proximité
http://icimarche.fr
on 2009-06-26 13:55
On 26 juin, 13:22, philippe lachaise <philippe.lacha...@gmail.com> wrote: > Je réserverai le suffixe "_id" pour les foreign keys sinon > > my 2 cents ;-) > > -- > IciMarché fédère l'e-commerce de proximitéhttp://icimarche.fr Sauf que je veux récupérer tous les admin de mon building. Le modele role faisant le lien entre les buildings et les users avec user_id, building_id et role_type_id Nicolas
on 2009-06-26 14:06
>> Sauf que je veux récupérer tous les admin de mon building. Le modele role
faisant le lien entre les buildings et les users avec user_id,
building_id
et role_type_id
qqchose comme ça :
admins = User.all( :condition => ['role.role_type_id = ? AND
role.building_id = ?', Role::ADMIN, @building.id ], :include => :role ]
--
IciMarché fédère l'e-commerce de proximité
http://icimarche.fr
on 2009-06-26 14:11
Tranquiliste a écrit : > belongs_to building > for role in roles > 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
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.