【问题标题】:Group function in belongs_to association railsbelongs_to 关联 Rails 中的组函数
【发布时间】:2016-05-07 07:48:37
【问题描述】:

用户.rb

enum gender: [:Male, :Female] 
belongs_to :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 { ??? }

【问题讨论】:

    标签: ruby-on-rails ruby activerecord enums


    【解决方案1】:

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

    例如,如果您想按name 资格列分组:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-17
      • 1970-01-01
      • 2017-05-16
      相关资源
      最近更新 更多