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
我无法覆盖的唯一情况是,当管理员添加用户时,它未经过验证,当管理员编辑用户(并输入密码)时,它不会被验证.
将: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
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
| 归档时间: | 
 | 
| 查看次数: | 22685 次 | 
| 最近记录: |