2016-01-29 46 views
1

user.rb組功能軌

enum gender: [:Male, :Female] 
belongs_to :qualification 

qualification.rb

has_many :users 

當我查詢

User.all.group(:gender).count.map { |k, v| [User.genders.key(k), v] }.to_h 

它給了我

{"Male"=>18, "Female"=>1} 

但是我不知道做同樣的資格,因爲協會涉及它。我該怎麼做?

User.all.group(:qualification_id).count.map { ??? } 

回答

4

您可以執行使用joins()與聯想的名稱,然後組由加盟模式的任一列的關聯模型之間的聯接。

例如,如果您希望將通過資格name列:

User.joins(:qualification).group('qualifications.name').count 

使用符號:qualification描述的joins方法的關係,但在group方法,以使用表名'qualifications'指定列。這會產生這樣的SQL請求:

SELECT COUNT(users.id) 
FROM users 
INNER JOIN qualifications ON users.qualification_id = qualifications.id 
GROUP BY qualifications.name 
+0

謝謝工程:) –