带变量的Validates_length_of

时间:2014-01-16 20:05:38

标签: ruby-on-rails

我正在尝试使用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"

为什么我收到此错误?

3 个答案:

答案 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)

保存在应用程序不同部分的变量未保存为数字。我已修复并重置变量,这解决了问题。