2011-09-19 22 views
1

我:關於驗證列入

AMOUNT = { '$ 0.50' => 0.5, '$ 1' => 1, '$ 2' => 2, '$ 5' => 5, '$ 10' => 10 } 

是不是:

validates :amount, :inclusion => { :in => %w(0.5 1 2 5 10), :message => '%{value} is not a valid amount' } 

同樣的事情:

validates :amount, :inclusion => { :in => AMOUNT.values, :message => '%{value} is not a valid amount' } 

對於前者,一切正常。對於後者,我每次提交的時候,我得到的驗證消息...

回答

1

在第一個:

:in => %w(0.5 1 2 5 10) 

:in是一個字符串數組。在您的第二個中:

:in => AMOUNT.values 

您的:in是一個Floats和Fixnums的數組。顯然,您的amount在驗證期間是一個字符串,10 != '10'爲真。

嘗試在你的AMOUNT到字符串改變值或當你建立:in做轉換:

:in => AMOUNT.values.map(&:to_s)