我正在创建一个应用,卖家(用户)每次销售商品时都会保存一条记录。此信息存储在名为items
的表中。此表包含user
,items_sold
和day
。
我现在想做的是:
items_sold
reports
的其他表user
中的每个用户创建一条新记录,items_sold
和day
更清楚地说明:
我想要离开......
为...
到目前为止我所拥有的是:
@consolidated_items = Item.all.group(:user).sum(:items_sold)
这给了我:
{"dave"=>9, "steve"=>20}
但是,我现在不知道该怎么做。到目前为止我的解决方案day
丢失了。此外,我现在还不知道如何将这些数据保存到reports
表格中(我希望类似于按钮说"创建报告" - 一旦用户推送它,报告中的记录将会被创造。)
答案 0 :(得分:0)
您的解决方案中不存在day
,因为您没有按此字段进行分组(您使用user
进行分组,因此user
成为您密钥的一部分)而您不是对其执行任何批处理操作(您使用items_sold
执行此操作,因为他们sum
。
您似乎希望将items_sold
的数量加到user
和day
,因此您必须使用.group([:user, :day])
。
如果您不想按day
分组,则没有确定的方法来检索日期,因为同一个用户可能有多个。
正确检索数据后,您需要构建一个持久化相关报告,即:
Report.create { user: the_user_from_db,
items_sold: the_count_from_db,
day: the_day_from_db }
此外,我建议将user_id
存储在reports
表中,而不是用户名本身。
Activerecord不支持批量记录插入,但您可以使用BulkInsert之类的宝石来实现此功能