Rails 3:如何只更新1个属性?

时间:2010-11-30 23:09:06

标签: ruby-on-rails validation ruby-on-rails-3

如何更新数据库中的1个属性而不必插入验证?

e.g:

我有密码为presence = true。当我想编辑数据库时,我必须传递密码。我想在不传递密码的情况下编辑1个字段。

我已经尝试过update_attribute,合并,但都没有。

感谢。 唐纳德

编辑:即使使用可在控制台上运行的验证,它仍会将密码放在那里。

以下是验证:

 def password_validation_required?
      encrypted_password.blank? || !@password.blank?
    end

当我提交没有密码字段的表单时,我在控制台上得到了这个: (它在encrypted_pa​​ssword字段上显示空白)

 SQL (0.3ms)  UPDATE "wsps" SET "about" = 'gfg', "encrypted_password" = 'fcf538f9a588befec4ee2567754a42f05b3cd75f24919d49530426786491c3e1', "updated_at" = '2010-11-30 23:56:45.594168' WHERE ("wsps"."id" = 4)

也许我的控制器不正确?我有这个:

if @wsp.update_attributes(params[:wsp])

我的表格:

<%= form_for(@wsp, :html => { :multipart => true } ) do |f| %>

感谢

1 个答案:

答案 0 :(得分:2)

验证和回调的设计非常难以忽略。你可以这样做:

Model.update_all({:my_attribute => 'x'}, {:id => id})

http://rubydoc.info/docs/rails/3.0.0/ActiveRecord/Relation:update_all