2

私の RoR は現在、Bigdecimal レコードでいくつかの問題を引き起こしています。

私のコードは、特定の属性を次のように更新することです:

 BigDecimal.new((income*scale).to_s)

たとえば、スキャンしたフォームがあり、その値は

 11210000000.0

bigdecimal を印刷すると、次のようになります。

 #<BigDecimal:91e2284,'0.1121E11',18(27)>

mySQL dbのレコードを見ると、レコードが表示されます

  Income: 9999999999

収入が 100 億未満のすべてのレコードには、この問題はありません。

何が起こっている?

4

2 に答える 2

2

ターミナルでこれを書きました:

 rails g migration change_income_format_in_my_table

次に、移行ファイルを次のように設定します。

class ChangeIncomeFormatInMyTable < ActiveRecord::Migration
 def up
change_table :forms do |t|
  t.change :income, :decimal, :precision => 16, :scale => 2
end
 end

 def down
    change_table :forms do |t|
     t.change :income, :decimal
   end
 end
  end

次に入力した

rake db:migrate

ありがとうhouse9

于 2013-07-01T03:22:22.310 に答える
1

Ruby では BigDecimal に MAX 値がないと思います (ドキュメントで見つけることができませんが、Integer の場合であることはわかっているため)。残念ながら、すべてのデータベース システムにはこれらの制限があるため、大きな数値を文字列としてデータベースに保存したい場合があります。

于 2013-06-30T20:04:40.290 に答える