2014-01-16 20 views
0

我想使用rails-settings-cached來設置一些變量 - 密碼最小值和密碼最大值。Validates_length_of與變量

當我嘗試將這些成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

可能是您的設置模型讀取Rails模型加載後的值。所以它是不確定的。 –

回答

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? 
+0

那沒有用。 – evanvee

0

爲什麼使用lambdas?

您正在收到的錯誤是因爲:最小值選項必須採用整數或無窮大值。你正在爲它提供由lambda創建的函數。

你爲什麼不能使用:

validates_length_of :password, :minimum => Setting.password_min, ... 
+0

如果我刪除羔羊,我會得到同樣的結果。錯誤也沒有區別。 – evanvee

0

變量被保存在應用程序的不同部分並沒有獲得保存爲數字。我已修復並重置變量,並解決了這個問題。