rails中的update_all-使用这些行中的值来更新多行

问题描述

|| 在轨道上2.3.11 我正在尝试使用来自每个不同行中不同列的值来更新表中的多行(特别是,我正在使用Rails迁移将时间戳添加到已经存在的表中)。 起初,我以为update_all可能会起作用,但似乎仅用于更新具有相同值的多行。 我求助于使用sql语句来获取想要的内容(日期是已经存在的列,我将其用作时间戳的初始值):
execute <<-sql
  UPDATE tablename SET created_at = date;
sql
有更好的“方法”吗?     

解决方法

您应该能够引用
update_all
中的另一个字段。您的问题很可能是ѭ2是SQL关键字的事实。 查看是否可行:
Model.update_all(\'tablename.created_at = tablename.date\')
如果不是,您可能必须引用日期,但是在不同的数据库中日期会有所不同。 MySQL:
Model.update_all(\'`created_at` = `date`\')
SQLite:
Model.update_all(\'\"created_at\" = \"date\"\')