我有一个可能存在或可能不存在于数据库中的记录的id。
我想要做的只是更新数据库中记录的属性,否则忽略它。
现在我知道我可以做类似的事情:
model = Model.find_by_id(id)
if model
model.update_attribute(something: something)
end
但我想知道是否有更好的东西不涉及2个查询?
答案 0 :(得分:2)
Model.update_all({:something => 'something'}, {:id => id})
例如:
User.update_all({:first_name => 's'}, {:id => 1000})
将生成查询
UPDATE "users" SET "first_name" = 's' WHERE "users"."id" = 1000
答案 1 :(得分:2)
如果您没有要更新的对象,并且您希望在更新后触发AR回调,那么这将产生两个SQL查询,但很好看:
Model.update(id, {something: something})
如果您对回调不感兴趣,可以使用:
Model.update_all({something: something}, {id: id})