Active Record - 查找和更新(仅当对象存在时)

Dan*_*min 5 activerecord ruby-on-rails ruby-on-rails-3

我有一个记录的 ID,该记录可能存在于数据库中,也可能不存在。

我想要做的是仅在数据库中记录的属性存在时才更新它,否则忽略它。

现在我知道我可以做类似的事情:

model = Model.find_by_id(id)
if model
     model.update_attribute(something: something)
end
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有更好的东西不涉及 2 个查询?

ush*_*sha 4

Model.update_all({:something => 'something'}, {:id => id})
Run Code Online (Sandbox Code Playgroud)

例如:

User.update_all({:first_name => 's'}, {:id => 1000})
Run Code Online (Sandbox Code Playgroud)

将产生查询

UPDATE "users" SET "first_name" = 's' WHERE "users"."id" = 1000
Run Code Online (Sandbox Code Playgroud)