一次创建或更新多个记录?

时间:2014-03-03 19:16:21

标签: sql ruby-on-rails postgresql activerecord

我有以下代码来获取结果,按日期对它们进行分组并为该日期创建客户计数,然后将其插入到Calculation表中:

customers.group_by { |c| Date.parse c.created.to_s }.map do |date, v|
  value = v.map {|h1| 1}.sum

  Calculation.find_or_initialize_by(
    account_id: a.id,
    metric: 'active_customers',
    occurred_on: date
  ).update(
    value: value
  )
end

如果有数百个日期,则必须运行find_or_initialize_by ...数百次。

我喜欢做的是以某种方式避免做数百个“发现”和“创建”,并以某种方式拉动几个数据库调用。

原因是我遇到了多个数据库连接的问题,同时发生了很多发现/插入(这些代码通过后台作业同时运行)。

我正在使用Rails 4和Postgres 9.3.1。

0 个答案:

没有答案