如何编写只执行一个查询的代码?

时间:2011-05-03 11:15:05

标签: ruby-on-rails ruby

如何编写此代码,只执行一个查询而不是两个查询并激活验证? update_all绕过模型中定义的所有验证。

model = ModelName.find(params[:id])
success = model.update_attribute(:column_name, nil)

2 个答案:

答案 0 :(得分:4)

你做不到。运行验证确实包括至少一个步骤:将数据库记录加载到ruby对象(需要一个查询)。当然,更新数据库需要另一个查询。因此,无论如何,您将有两个查询任务。

答案 1 :(得分:0)

您可以使用update方法:

# Updates one record
  User.update(1, :name => 'testtesttest')

http://apidock.com/rails/ActiveRecord/Relation/update

但正如@mosch所说,它仍然是两个问题。

  User Load (0.0ms)[0m  SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1
  AREL (0.0ms)[0m  [1mUPDATE "users" SET "name" = 'testtesttest', "updated_at" = '2011-05-03 11:41:23.000000' WHERE "users"."id" = 1