2013-02-22 88 views
1

我想(大規模)更新模型。應通過與attR2位Rails使用col2更新屬性表col1

users = User.find_all_by_project_id(params[:project_id]) 
users.each do |d| 
    User.update_attribute attribute1 with attribute2 
end 

的VAL更換attB位1的VAL更新每一行如何是最好的方式? 感謝您的輸入。

回答

1

應該這樣做是這樣的:

User.where(:project_id => params[:project_id]).update_all('col1 = col2') 

User.update_all('col1 = col2', {:project_id => params['project_id'] }) 
+0

'User.find_all_by_project_id(params [:project_id])。update_all('col1 = col2')'這可能會返回一個錯誤。 – jvnill 2013-02-22 08:10:38

+1

這是有效的,在AR :: Relation上聲明update_all,直接調用update_all只是委託給Relation並應用條件,所以它們基本上是相同的調用。 – Cluster 2013-02-22 08:25:09

+0

jvnill是正確的,它作爲動態發現者工作的舊方式和返回陣列,只是測試與3.2.11 – gertas 2013-02-22 08:28:30

1

這是你應該怎麼做,所以一切都發生在SQL方面。

User.update_all("attribute1 = attribute2", { project_id: params[:project_id] }) 
+0

感謝您的回答 – Werner 2013-02-22 11:49:18

相關問題