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