问题描述
||
在轨道上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\"\')