0

这是一个用户记录。

{"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直接使用更新而不获取每个属性,就像我们创建记录时一样。

4

1 回答 1

1

你更喜欢这个吗?

User.update(@user[:id], @user.slice(:name, :age, :job)) 

当您使用 Ruby on Rails 6.0并且使用 PostgreSQL 数据库时,您可以upsert像这样使用:

User.upsert(@user, unique_by: :id)
于 2019-11-29T19:40:05.783 回答