Rails批量更新条件

时间:2016-02-18 02:32:53

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

我需要使用ActiveRecord #update_all批量更新一些记录。

values = {}
values[:developer_id] = value
values[:status] = 2 # if issue.status == 1
issues.update_all(values)

我需要确保仅在其值为1时更新状态,因此我不确定如何在不循环问题并检查每个问题并更新列(n + 1)查询的情况下实现该状态。 / p>

修改

要明确问题,我需要更新所有问题的所有developer_id列,并仅在状态== 1时更新状态。

如何批量更新并同时应用此条件?

1 个答案:

答案 0 :(得分:0)

使用有效记录选择status1的唯一行,然后批量更新。

issues = Issue.where(status: 1)

或将其链接到update_all

issues.where(status: 1).update_all(values)

两者都会直接在数据库内部查询,因此N + 1不应该发生。