2016-10-13 2 views
0

を保存しない:https://stackoverflow.com/a/3843805/4162458Railsのお金は、私がこの回答ごとにお金の宝石とcomposed_ofを使用しています適切に

私は、データベース内の整数列を持っている、:割引

product.rb

class Product < ActiveRecord::Base 

    composed_of :discount_display, 
     :class_name => 'Money', 
     :mapping => %w(discount cents), 
     :converter => Proc.new { |value| Money.new(value) } 

私のフォームには:

<%= f.number_field :discount_display, class: 'form-control', min: "0" %> 

ただし、12を入力すると保存されますデータベースは12として、私は0.12としてリフレッシュするときにフォームに表示されます。

「12」と入力すると、データベースに1200として保存され、正しく表示されるようにするにはどうすればよいですか? documentation 1として

+0

する必要があり、それがハンドルあなたのための変換。 – Stefan

答えて

0

はセントの整数として、金銭的価値を表します。これにより、浮動小数点エラー( )が回避されます。

したがって、ユーザーからの収入が期待される場合は、DBに保存する前にセントに変換する必要があります。おそらく、あなたのコンバータprocは[お金レール](https://github.com/RubyMoney/money-rails)宝石を見てみましょう

Proc.new { |value| Money.new(value * 100) } 

または

Proc.new { |value| Money.from_amount(value, "USD") } 
関連する問題