Ruby on rails Rails验证-密码:on=>;:创建不';不管用?

Ruby on rails Rails验证-密码:on=>;:创建不';不管用?,ruby-on-rails,ruby,validation,passwords,Ruby On Rails,Ruby,Validation,Passwords,我有这个密码验证规则-我想在用户创建帐户时验证密码,然后在设置中-如果他不更改密码,我不想更改它(只有当相应的用户将更改它=他通过密码确认设置了新密码时) 以下是我所拥有的: validates :password, :length => {:within => 6..40}, :on => :create 但是规则:on=>:create对我不起作用-如果我在设置中发送空白密码,我仍然会收到关于错误密码的错误信息

我有这个密码验证规则-我想在用户创建帐户时验证密码,然后在设置中-如果他不更改密码,我不想更改它(只有当相应的用户将更改它=他通过密码确认设置了新密码时)

以下是我所拥有的:

  validates :password, 
            :length => {:within => 6..40}, 
            :on => :create   
但是规则
:on=>:create
对我不起作用-如果我在设置中发送空白密码,我仍然会收到关于错误密码的错误信息


我做错了什么?

看起来应该这样做:

validates :password, length: { within: (6..40) }, if: -> user { not user.persisted? or user.password.present? }

只有当用户尚未持久化(
create
action)或稍后(通过设置)提供了密码时,它才会验证密码。

这是电子邮件验证,您的密码验证是什么?哦,对不起,我的错误,请查看更新的OP。