关于验证包含

时间:2011-09-19 03:19:13

标签: ruby-on-rails-3

我有:

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 个答案:

答案 0 :(得分: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)