在轨道上2.3.11
我正在尝试使用每个不同行中不同列的值更新表中的多个行(具体来说,我正在使用rails迁移将时间戳添加到已存在的表中)。
起初我认为update_all可能有效,但似乎只是用于更新具有相同值的多行。
我使用SQL语句来获取我想要的内容(日期是已存在的列,我将其用作我的时间戳的初始值):
execute <<-SQL
UPDATE tablename SET created_at = date;
SQL
这样做有更好的“轨道方式”吗?
答案 0 :(得分:3)
您应该可以在update_all
中引用其他字段。您的问题很可能是date
是SQL关键字的事实。
看看是否有效:
Model.update_all('tablename.created_at = tablename.date')
如果不是,您可能需要引用日期,但在不同的数据库中会有所不同。
<强> MySQL的:强>
Model.update_all('`created_at` = `date`')
<强> SQLite的:强>
Model.update_all('"created_at" = "date"')