2011-09-16 6 views
3

に設定されている場合、私のフォームには、次のものがあります。奇妙な行動量が0.5

<%= 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

量列のどのようなタイプですか?ルビの属性タイプは何ですか? – Augusto

+0

このリクエストでログのチャンクを投稿できますか? 'self.amount.to_f'を試してみてください。 – Bohdan

+0

@Augusto、それは整数型 –

答えて

1

あなたが整数フィールドの金額を保存している場合、あなたがそれに置く任意の浮動小数点数を丸めるために起こっています。これは、self.amount.to_fが0.0である理由です.0.5を整数フィールドに入れると0になり、0.to_fは0.0になるからです。