我想(大規模)更新模型。應通過與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更新每一行如何是最好的方式? 感謝您的輸入。
我想(大規模)更新模型。應通過與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更新每一行如何是最好的方式? 感謝您的輸入。
應該這樣做是這樣的:
User.where(:project_id => params[:project_id]).update_all('col1 = col2')
或
User.update_all('col1 = col2', {:project_id => params['project_id'] })
這是你應該怎麼做,所以一切都發生在SQL方面。
User.update_all("attribute1 = attribute2", { project_id: params[:project_id] })
感謝您的回答 – Werner 2013-02-22 11:49:18
'User.find_all_by_project_id(params [:project_id])。update_all('col1 = col2')'這可能會返回一個錯誤。 – jvnill 2013-02-22 08:10:38
這是有效的,在AR :: Relation上聲明update_all,直接調用update_all只是委託給Relation並應用條件,所以它們基本上是相同的調用。 – Cluster 2013-02-22 08:25:09
jvnill是正確的,它作爲動態發現者工作的舊方式和返回陣列,只是測試與3.2.11 – gertas 2013-02-22 08:28:30