Ruby on Rails Devise Gem动态设置最小密码长度

lztngnrs  于 2023-04-29  发布在  Ruby
关注(0)|答案(1)|浏览(108)

目前我设置密码长度与

config.password_length = 6..128

但如何在运行时动态更改它而不重新启动服务器呢?
我实施了

def password_complexity

我可以在那里检查它,但然后我必须禁用配置中的设置。如何禁用它?

dgsult0t

dgsult0t1#

Validatable模块只是为您生成一堆Rails验证 www.example.com
由于:within不接受符号或lambda,因此您似乎必须进行一些丑陋的 meta编程来删除验证规则并替换为您自己的验证规则,或者您可以不包括Devise :validatable模块,而是自己设置所有验证规则以进行更细粒度的控制

class User < ApplicationRecord
  validates_length_of :password, minimum: -> (user) { user.password_range.first }, maximum: -> (user) { user.password_range.last }, allow_blank: true
  # other password/email rules

  private
  
  def password_range
    if something?
      (12..250)
    else
      (4..20)
    end
  end
end

相关问题