2012-04-27 54 views
1

我想下面的SQL查詢來遷移文件時,對執行添加一列(在同一行更新與現有列值的新領域)Rails 3.x如何根據行值寫入更新全部?

UPDATE users SET last_login=updated_at; 

的SQL語句正常工作後執行數據庫,但在鐵軌我嘗試使用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。

+0

它可以是一些驗證問題,就像這個鏈接上的例子? http://guides.rubyonrails.org/migrations.html#using-models-in-your-migrations – Matzi 2012-04-27 10:31:42

+0

本來可以的,但在那種情況下並非如此。 – jlamberc 2012-04-30 05:33:17

回答

3

語法確實是正確的,問題依賴於我必須回滾以前的transaction這一事實。

User.update_all("last_login=updated_at") 

此聲明正常工作。