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
并输出以下内容(键为用户ID,值为订单计数)
{2=>3, 3=>2, 4=>1}
如何将用户电子邮件和值替换为订单计数?
答案 0 :(得分:1)
这适合你吗?
Hash[User.includes(:orders).map{|u| [u.email, u.orders.count ]}]
答案 1 :(得分:0)
您可以使用:
User.joins(:orders).group(:email).count
参见&#34;分组项目总数&#34; RailsGuides中Group文档中的部分。您需要确保email
列上有唯一约束。