我的表格如下:
<%= f.select(:amount, Order::AMOUNT_VALUES, {:blank => false}) %>
我的模特有:
AMOUNT_VALUES = { '$ 0.50' => 0.5, '$ 1' => 1, '$ 2' => 2, '$ 5' => 5, '$ 10' => 10 }
validate :amount_values_to_be_of_certain_values
def amount_values_to_be_of_certain_values
puts self.amount
unless AMOUNT_VALUES.has_value? self.amount
errors.add(:amount, 'not a valid field')
end
end
如果我选择0.5并提交表格。表格抱怨说“数量不是有效字段”。如果我选择其他值之一,则表单提交正确。
似乎问题是小数点以0开头。
这里有什么问题?
答案 0 :(得分:1)
如果您将金额存储在一个整数字段中,那么它将对您放入其中的任何浮点数进行舍入。这就是self.amount.to_f为0.0的原因,因为将0.5放入整数字段会将其更改为0,而0.to_f则为0.0。