Ruby on rails ActiveRecord直接从哈希更新,而不获取每个属性

Ruby on rails ActiveRecord直接从哈希更新,而不获取每个属性,ruby-on-rails,ruby,rails-activerecord,Ruby On Rails,Ruby,Rails Activerecord,这是一个用户记录 {"id"=>1, "name"=>"jack", "age"=>43, "job"=>"driver"} 我想使用以下数据更新此用户 @user = {"id"=>1, "name"=>"tomas", "age"=>35, "job"=>"developer"} 我可以用这种方式更新这个用户 name, age, job = @user.values_at(:name, :age, :job) User.update(1,

这是一个用户记录

{"id"=>1, "name"=>"jack", "age"=>43, "job"=>"driver"}
我想使用以下数据更新此用户

@user = {"id"=>1, "name"=>"tomas", "age"=>35, "job"=>"developer"}
我可以用这种方式更新这个用户

name, age, job = @user.values_at(:name, :age, :job)
User.update(1, :name => name, :age => age, :job => job) 

但是我想知道是否可以直接使用
@user
进行更新,而不必像创建记录时那样获取每个属性。

您更喜欢这样吗

User.update(@user[:id], @user.slice(:name, :age, :job)) 
当您在Ruby on Rails 6.0上使用PostgreSQL数据库时,您可以像这样使用
upsert

User.upsert(@user, unique_by: :id)

我在Rails 5上,但我遇到了这个问题。ActiveModel::ForbiddenAttribute错误(ActiveModel::ForbiddenAttribute错误):更新到Rails 6,upsert帮助了我。非常感谢。