ActiveRecord 直接从哈希更新而不获取每个属性
ActiveRecord update from hash directly without getting each attribute
这是一条用户记录。
{"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))
并且当您在 Rails 6.0 和 上使用 Ruby 时,您使用的是 PostgreSQL 数据库,您可以像这样使用 upsert
:
User.upsert(@user, unique_by: :id)
这是一条用户记录。
{"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))
并且当您在 Rails 6.0 和 上使用 Ruby 时,您使用的是 PostgreSQL 数据库,您可以像这样使用 upsert
:
User.upsert(@user, unique_by: :id)