1

列を追加した後、移行ファイルで次の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。

4

1 に答える 1

3

構文は確かに正しいです。問題は、前のトランザクションをロールバックする必要があるという事実に依存していました。

User.update_all("last_login=updated_at")

このステートメントは正しく機能します。

于 2012-04-30T05:32:53.877 に答える