我正在尝试使用rails-settings-cached来设置一些变量 - 密码最小值和密码最大值。
当我尝试将这些内容合并到validates_length_of
时,我收到以下错误消息:
:minimum must be a nonnegative Integer or Infinity
代码:
validates_length_of :password, :minimum => lambda{Setting.password_min}, :maximum => lambda{Setting.password_max}, :if => :should_validate_password?
我知道变量已设置,因为当我进入rails console
时,变量已设置:
2.0.0-p353 :009 > Setting.password_max
=> "14"
2.0.0-p353 :010 > Setting.password_min
=> "6"
为什么我收到此错误?
答案 0 :(得分:0)
尝试使用to_i将字符串转换为整数。即。
validates_length_of :password, :minimum => lambda{Setting.password_min.to_i}, :maximum => lambda{Setting.password_max.to_i}, :if => :should_validate_password?
答案 1 :(得分:0)
你为什么使用lambdas?
您获得的错误是因为:minimum选项必须采用Integer或Infinity值。您正在为它提供由lambda创建的函数。
为什么不能使用:
validates_length_of :password, :minimum => Setting.password_min, ...
答案 2 :(得分:0)
保存在应用程序不同部分的变量未保存为数字。我已修复并重置变量,这解决了问题。