1

我写了一个迁移,它执行以下操作:

Event.update_all 'tom_cancelled = false', 'tom_cancelled IS NULL'
Event.update_all 'jerry_cancelled = false', 'jerry_cancelled IS NULL'

我可以(如果可以的话,如何)将它们结合在一起使其干燥?我会用块吗?

4

1 回答 1

2

除非您想在 ActiveRecord 中使用循环,否则您不能这样做,但这没有意义,因为您最终会UPDATE为结果集中的每条记录查询一个 + 1 个 SELECT。

在当前方式中,无论结果集中有多少条记录,您都只运行两个查询。

绝对没有必要对当前代码进行更多抽象。特别是考虑到它在迁移中运行。

于 2013-02-15T20:10:07.520 回答