2010-09-08 71 views
0

我有型號:named_scope寬度的has_many協會和計數

class User < ActiveRecord::Base 
    has_many :user_skills 
end 

class UserSkill < ActiveRecord::Base 
    belongs_to :user 

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

我想要得到的額定技能計數。

current_user.user_skills.rated.cont 

它工作正常,但生成的SQL是一個很奇怪。

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

爲什麼它過去兩次user_id?如何避免雙重傳遞user_id字段?

回答

0

我無法回答原因。

但絕對沒有必要避免這種情況,因爲默認情況下,您的(My | Postgre)SQL(ite)服務器應該刪除內部優化,並且它不應該對此查詢花費的時間有任何影響。