2011-05-26 42 views
1

on Rails的2.3.11update_all在軌 - 利用那些行中的值更新多行

我試圖從不同的列中的每個不同行的更新值表中的多個行(具體我使用rails migrations將時間戳添加到已存在的表中)。

起初我以爲update_all可能會起作用,但它似乎只是用於更新具有相同值的多行。

我使出使用SQL語句來得到我想要的東西(日期是已經存在之列,這我使用作爲我的時間戳的初始值):

execute <<-SQL 
    UPDATE tablename SET created_at = date; 
SQL 

有沒有更好的'軌道的方式'這樣做?

回答

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"')