Rails问题:无需.each方法,如何生成含所有用户数据的单个饼图
解决方法
你遇到的问题是User.all返回的是用户集合,而products是单个User实例的关联方法,集合无法调用该实例方法。要生成包含所有用户产品数据的饼图,直接从Product模型查询即可:
基础实现
<%= pie_chart Product.group(:name).count %>
这段代码会统计所有产品按名称分组的数量,直接生成包含所有用户产品数据的饼图。
可选:仅统计关联到用户的产品
如果你的Product表存在未关联用户的记录(user_id为空),可以过滤掉这些数据:
<%= pie_chart Product.where.not(user_id: nil).group(:name).count %>
原理说明
- 单个
User实例的products方法会返回该用户关联的产品集合,但User.all是多个用户的集合,没有这个实例方法。 - 直接查询
Product模型并按name分组计数,是数据库层面的高效查询,能一次性获取所有用户的产品分布数据。
内容的提问来源于stack exchange,提问作者nourza
相关产品推荐
相关产品推荐

