belongs_to关联rails中的组功能

时间:2016-01-29 14:24:43

标签: ruby-on-rails ruby activerecord enums

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 { ??? }

1 个答案:

答案 0 :(得分:4)

您可以使用joins()和关联名称在关联模型之间执行联接,然后按联接模型的任何列进行分组。

例如,如果您想按name资格栏进行分组:

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

使用描述:qualification方法中的关系的符号joins,但在'qualifications'方法中使用表名group以指定列。这将生成如下的SQL请求:

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