我有一个有很多宠物的数据库。 我希望更新“' name'属性通过改变它的情况。 我试过了:
Pet.update_all(:name => Pet.name.upcase)
Pet.update_all(:name => name.upcase)
Pet.update_all(:name => :name.upcase)
Pet.update_all(:name => "#{name.upcase}")
但所有这些都返回:
我在这里错过了什么?
答案 0 :(得分:1)
只要您在更新属性中引用自己的属性,如果不进行迭代,您将无法执行此操作。一个选项可能是:
Pet.all.each {|x| x.update(name: x.name.upcase)
另一种选择:
ActiveRecord::Base.connection.execute "UPDATE pets SET name = UPPER(name)"
答案 1 :(得分:0)
做Rails方式:
Pet.update_all(:name => "UPPER(name)")
答案 2 :(得分:0)
Pet.update_all('"name" = Upper("name")')
适用于 Rails 5.2