在密码重置期间,对Devise模型中的某些成员进行跳过验证

Rah*_*hul 6 validation ruby-on-rails devise

我的用户(设计)模型还有姓名,城市,国家,电话会员.

在创建注册页面 - 我 validates_presence_of city, nation, phone, name, email, :on => :create

在编辑注册页面 - 我 validates_presence_of city, nation, phone, name, :on => :update

现在当我在forgot_password_page上设置一个新密码时,它会询问里面是城市,国家,电话,名字的存在 Devise::PasswordsController#update

我该如何处理选择性验证?

我猜它应该是这样的,

validates_presence_of city, nation, phone, name, :on => :update, :if => :not_recovering_password

def not_recovering_password
  # what goes here
end
Run Code Online (Sandbox Code Playgroud)

小智 10

我遇到了类似的问题,因为创建用户时并不是所有的字段都是必需的.on: :update使用验证检查其他字段的存在.

所以这就是我解决的问题:

validates :birthdate, presence: true, on: :update, unless: Proc.new{|u| u.encrypted_password_changed? }
Run Code Online (Sandbox Code Playgroud)

该方法encrypted_password_changed?Devise Recoverable中使用的方法.


Rah*_*hul 0

从 Jos\xc3\xa9 得到答案 - https://github.com/plataformatec/devise/issues/1623

\n

  • 这甚至不是一个答案!“我的建议是简单地删除这些验证。” (2认同)