Rails 3.x如何根据行值编写更新全部?

时间:2012-04-27 08:49:14

标签: ruby-on-rails-3 activerecord

我希望在添加列之后在迁移文件中执行以下SQL查询(使用同一行中的现有列值更新新字段)

UPDATE users SET last_login=updated_at;

SQL语句在数据库上执行时正常工作,但在rails中我使用ActiveRecord update_all方法尝试了多种语法,但没有成功

User.update_all("last_login=updated_at")

我收到以下错误

ActiveRecord::StatementInvalid: PGError: ERROR:  current transaction is aborted, commands ignored until end of transaction block
: UPDATE "users" SET last_login=updated_at

显然我的语法中缺少某些东西,但无法弄清楚是什么。 有人能指出我正确的语法吗?

此致/ J。

1 个答案:

答案 0 :(得分:3)

语法确实是正确的,问题在于我必须回滚之前的transaction

User.update_all("last_login=updated_at")

此声明正常运作。