2010-09-08 8 views
0

I ont des modèles:association named_scope has_many largeur et compter

class User < ActiveRecord::Base 
    has_many :user_skills 
end 

class UserSkill < ActiveRecord::Base 
    belongs_to :user 

    named_scope :rated, :conditions => "count_raters > 0" 
end 

Je veux obtenir le nombre de compétences notées.

current_user.user_skills.rated.cont 

Cela fonctionne très bien, mais le SQL généré est très étrange.

SELECT count(*) AS count_all FROM `user_skills` WHERE (((count_raters > 0) AND (`user_skills`.user_id = 988988934)) AND (`user_skills`.user_id = 988988934)) 

Pourquoi deux fois user_id? Comment éviter de doubler le champ user_id?

Répondre

0

Je ne peux pas répondre au pourquoi.

Mais il n'y a absolument pas besoin d'éviter cela, car l'optimisation interne de votre serveur (My | Postgre) SQL (ite) devrait l'enlever par défaut, et cela ne devrait pas avoir d'influence sur le temps passé sur cette requête .

Questions connexes