2013-02-22 68 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

相关问题