我想(大规模)更新模型。应通过与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