我的用户(设计)模型还有姓名,城市,国家,电话会员.
在创建注册页面中 – 我验证了城市,电话,姓名,电子邮件的确认_存在,:on => :创建
在编辑注册页面中 – 我验证了城市,以及:on => :更新
现在当我在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
解决方法
我遇到了类似的问题,因为创建用户时并不是所有字段都是必需的.检查其他字段的存在:使用验证进行更新.
所以这就是我解决的问题:
validates :birthdate,presence: true,on: :update,unless: Proc.new{|u| u.encrypted_password_changed? }
方法encrypted_password_changed?是Devise Recoverable中使用的那个.