私はmysqlデータベースに小数点以下を格納するRailsアプリケーションに問題があります。私は2つのフィールド: "金額"と "通貨"を持つフォームを持っています。 「amount」フィールドに10進数値を入力すると(例えば1,22)、Railsはデータベースに1を格納します。Ruby on Railsはmysqlデータベースに小数点以下を格納しません:
私のログファイルは次のようになります。
Started POST "/cashamounts" for 127.0.0.1 at 2012-02-04 13:23:54 +0100
Processing by CashamountsController#create as HTML
Parameters: {"utf8"=>"✓","authenticity_token"=>"QpWGfEtDR1tc7wTFmZZst9gYjKAyXtRypilsxDE9Tzs=", "cashamount"=>{"currency_id"=>"eur", "amount"=>"1,22"}, "commit"=>"Create Cashamount"}
[1m[36mCurrency Load (2.8ms)[0m [1mSELECT `currencies`.* FROM `currencies` ORDER BY name[0m
[1m[35m (0.2ms)[0m BEGIN
[1m[36mSQL (0.3ms)[0m [1mINSERT INTO `cashamounts` (`amount`, `created_at`, `currency_id`, `updated_at`) VALUES (1, '2012-02-04 12:23:54', 'eur', '2012-02-04 12:23:54')[0m
[1m[35m (0.6ms)[0m COMMIT
Redirected to http://localhost:3000/cashamounts/8
Completed 302 Found in 94ms
だから量が正しくのparamsに格納されますが、データベースに正しく挿入されていません。私はdb/schema.rbファイルをチェックしました。列「金額」の行は次のとおりです。
t.decimal "amount", :precision => 10, :scale => 2
他にはどこに問題を見つけることができますか?
PS。私はお金の宝石を使って始めましたが、それは同じ問題を示しました。「、」の後の数字はすべて保存されません。
'1.22'のように小数点を入力するとどうなりますか? –
また、1.22の表記法では動作しません: パラメータ:{"utf8" => "✓"、 "authenticity_token" => "QpWGfEtDR1tc7wTFmZZst9gYjKAyXtRypilsxDE9Tzs ="、 "cashamount" => {"currency_id" => ""、 "amount2 "=>" 1.22 "}、"コミット "=>"カashamountを作成 "} [1m [35mCurrency Load(3.3ms)[0m SELECT'通貨] * [通貨] ORDER BY名 [1m [36m(0.2 (amount、created_at'、 'currency_id'、' updated_at')VALUES(1、 '2012-02-30)[0m [1mBEGIN [0m [1m [35mSQL(0.5ms) 04 13:05:27 '、' '、' 2012-02-04 13:05:27 ') – gerwin
マイグレーションなどを実行したことを忘れましたか?実際のDBスキーマを確認し(MySQL自体を介して)、それがINTフィールドでないことを確認してください。 – d11wtq