Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails使用col2更新属性表col1_Ruby On Rails_Mass Assignment - Fatal编程技术网

Ruby on rails Rails使用col2更新属性表col1

Ruby on rails Rails使用col2更新属性表col1,ruby-on-rails,mass-assignment,Ruby On Rails,Mass Assignment,我想(批量)更新模型。应通过将attb 1的val替换为ATTR 2的val来更新的每一行 users = User.find_all_by_project_id(params[:project_id]) users.each do |d| User.update_attribute attribute1 with attribute2 end 最好的方法是什么? 感谢您的输入。应该这样做: User.where(:project_id => params[:project_id])

我想(批量)更新模型。应通过将attb 1的val替换为ATTR 2的val来更新的每一行

users = User.find_all_by_project_id(params[:project_id])
users.each do |d|
  User.update_attribute attribute1 with attribute2
end
最好的方法是什么?
感谢您的输入。

应该这样做:

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


您应该这样做,以便所有事情都在sql端发生

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

User.find\u all\u by_project\u id(params[:project\u id])。update\u all('col1=col2')
这可能会返回一个错误。这是有效的,update\u all在AR::Relation上声明,直接调用update\u all只是委托给Relation并应用条件,因此,它们基本上是相同的调用。jvnill是对的,它失败了,因为动态查找程序以旧的方式工作并返回数组,只是用3.2.11I did:users.each do | d | User.update|all('col1=col2',{:id=>d.id})进行了测试。我不知道你的应用程序逻辑,但请记住它不是最优的,它产生的查询数量与用户数量一样多
User.update\u all
带有条件时应只生成一个更新所有记录的查询。
User.update_all("attribute1 = attribute2", { project_id: params[:project_id] })