如何在记录更新期间从validation中排除密码字段? (Rails 3.0.4,Ruby 1.9.2)

我有一个允许更新用户记录的表单。 它包含以下字段:password和:password_confirmation但如果加密密码已存储在数据库中,我希望在它们上运行validation。

视图文件中的字段:

  'Confirm Password' %> 

在搜索互联网时,我发现了一些代码,我假设它是以前版本的Ruby / Rails。 (我会在我的用户模型中放置。)

 validates_presence_of :password, :on => create 

由于我的用户模型中的密码validation语法不同(下面),我对我需要的语法感到困惑。

 validates :password, :presence => true, :confirmation => true 

我搜索了其他post,肯定可以使用一些方向。

– 免责声明 – 我确实看到有关于条件validation的屏幕演员,但我现在无法观看。

谢谢,所有。

编辑 – 插入以下代码,它允许用户记录更新,而不会抱怨缺少密码字段。

 validates :password, :presence => true, :confirmation => true, :on => :create 

我建议你做以下事情:

 validates :password, :presence => true, :confirmation => true, :if => lambda{ new_record? || !password.nil? } 

这基本上表示需要在创建时使用password_confirmation确认密码,并且还需要在密码不为零时确认 – 例如,当用户更新其密码时。

 validates :password, :presence => true, :confirmation => true, :on => :create 

阅读更多关于Railsguides的信息: http ://edgeguides.rubyonrails.org/active_record_validations_callbacks.html#on