Chr*_*nch 14 validation ruby-on-rails
所以我有一些有趣的密码验证要求:
当用户注册时,我希望他们必须输入密码并确认并介于两者之间6..40
(GOT THIS WORKING 100%)
当用户更新其个人资料时,适用相同的验证规则(GOT THIS WORKING 100%)
当管理员添加用户时,他们只需输入一次密码就应该验证(NOT WORKIG)
当管理员编辑用户并且密码字段为空时,它不应更新密码,如果输入密码,则应验证密码.(部分工作)
validates :password, :presence => true,
:confirmation => true,
:length => {:within => 6..40},
:unless => :force_submit
Run Code Online (Sandbox Code Playgroud)我无法覆盖的唯一情况是,当管理员添加用户时,它未经过验证,当管理员编辑用户(并输入密码)时,它不会被验证.
将:force_submit
在从管理形式传递,所以密码没有被验证.(所以更新空密码的情况有效)
任何想法/魔术?
Chr*_*nch 29
以下似乎符合我的要求...我实际上现在要求所有用户确认..(它使视图更清洁).但是在更新中,我允许空白.
validates :password, :presence => true,
:confirmation => true,
:length => {:within => 6..40},
:on => :create
validates :password, :confirmation => true,
:length => {:within => 6..40},
:allow_blank => true,
:on => :update
Run Code Online (Sandbox Code Playgroud)
Tom*_*ord 28
在接受的答案上略微构建,这是我在Rails项目中使用的代码.(注意:我们devise
用于处理用户身份验证和devise_invitable
创建新用户.)
PASSWORD_FORMAT = /\A
(?=.{8,}) # Must contain 8 or more characters
(?=.*\d) # Must contain a digit
(?=.*[a-z]) # Must contain a lower case character
(?=.*[A-Z]) # Must contain an upper case character
(?=.*[[:^alnum:]]) # Must contain a symbol
/x
validates :password,
presence: true,
length: { in: Devise.password_length },
format: { with: PASSWORD_FORMAT },
confirmation: true,
on: :create
validates :password,
allow_nil: true,
length: { in: Devise.password_length },
format: { with: PASSWORD_FORMAT },
confirmation: true,
on: :update
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
22685 次 |
最近记录: |