mysql - 按具有 has_many 关联的连接表列分组

标签 mysql ruby-on-rails activerecord

下面是我的关系

    class User < ActiveRecord::Base
      has_many :orders, dependent: :destroy
    end

    # Table name: orders
    #  id               :integer          not null, primary key
    #  status           :string(255)
    #  total_cost       :integer          default(0)
    #  user_id          :integer
    #  created_at       :datetime
    #  updated_at       :datetime

class Order < ActiveRecord::Base
      belongs_to :user
    end

我试图列出用户及其订单数。对于预期输出

 {"user1@gmail.com"=>3, "user1@gmail.com"=>2, "user1@gmail.com"=>1}

我尝试了以下

User.joins(:orders).group("orders.users.id").count

并得到以下输出(key为用户id,value为订单数)

{2=>3, 3=>2, 4=>1} 

如何用用户电子邮件替换键和订单计数的值?

最佳答案

这对你有用吗?

Hash[User.includes(:orders).map{|u| [u.email, u.orders.count ]}]

关于mysql - 按具有 has_many 关联的连接表列分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31247431/

相关文章:

php - 前端表单回显数据并允许用户通过各种输入字段更新内容?

mysql - 事件记录何时真正插入数据库

sql - 用什么代替多态关联?

mysql - 固定帖子建模 : having pinned flag column inside "posts" table VS having pinned_posts table

ruby-on-rails - 在 Rails 模型中使用多个 PostgreSQL 模式

ruby-on-rails - 如何在 ActiveRecord 事务中获得保存(无感叹号)语义?

php - 检查表中的多行,如果行匹配,则将其计为 1

php - 如何判断 MySQL 字段的默认值是空字符串还是没有默认值?

php - 存储上传的用户图片

ruby-on-rails - 我想更改工厂的位置,如何让 Rails 在生成时知道新位置?