我有:
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' }
对于前者,一切正常。对于后者,每次提交时,我都会收到验证消息......
答案 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)