Ruby on rails 中的组函数属于关联rails

Ruby on rails 中的组函数属于关联rails,ruby-on-rails,ruby,activerecord,enums,Ruby On Rails,Ruby,Activerecord,Enums,user.rb 资历.rb enum gender: [:Male, :Female] belongs_to :qualification 当我询问 has_many :users 它给了我 User.all.group(:gender).count.map { |k, v| [User.genders.key(k), v] }.to_h 但我不知道在资格认证方面也应该这样做,因为协会也参与其中。我是如何做到的 {"Male"=>18, "Female"=>1} 您可以使用

user.rb

资历.rb

enum gender: [:Male, :Female] 
belongs_to :qualification
当我询问

has_many :users
它给了我

User.all.group(:gender).count.map { |k, v| [User.genders.key(k), v] }.to_h
但我不知道在资格认证方面也应该这样做,因为协会也参与其中。我是如何做到的

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

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

例如,如果要按限定的
名称
列进行分组:

User.all.group(:qualification_id).count.map { ??? }
使用符号
:限定
描述
联接
方法中的关系,但在
方法中使用表名
“限定”
,以指定列。这将生成如下所示的SQL请求:

User.joins(:qualification).group('qualifications.name').count
  • ActiveRecord的文档(搜索
    连接
    ):
  • SQL
    联接的说明
SELECT COUNT(users.id)
FROM users
INNER JOIN qualifications ON users.qualification_id = qualifications.id
GROUP BY qualifications.name