Rails从哈希中保存多个记录

时间:2017-08-09 13:43:09

标签: ruby-on-rails ruby-on-rails-4 activerecord

我有以下哈希记录用户nameitems_sold

{"dave"=>9, "steve"=>20}

我是通过我的Rawdatum Index行动创建的:

@consolidated_rawdata = Rawdatum.all.group(:user).sum(:items_sold)

我现在要做的是通过一个动作(单击一个按钮)将该对象(dave和steve)中的两个对象保存到一个名为reports的表中,其中包含两列:{{ 1}}和user一样:

enter image description here

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

不知道这是否算作单个动作,但您可以像这样迭代哈希:

@consolidated_rawdata.each {|name, items_sold| Report.create(user: 
  name, items_sold: items_sold)}

答案 1 :(得分:0)

如果一个动作只需单击一下就可以了。我们可以循环抛出哈希并保存记录

我会把它放在像Reports

这样的模型中
class Report < ApplicationRecord
  #Report.create_consolidated_rawdata
  def self.create_consolidated_rawdata
    @consolidated_rawdata = Rawdatum.all.group(:user).sum(:items_sold)
    @consolidated_rawdata.do |name, items_sold| 
      Report.create(user: name, items_sold: items_sold)
    end
  end
end

我希望这有效