2017-08-03 8 views
0

この移行を実行すると、geo_latitude列とgeo_longitude列は「float型」(精度と位取りなし)になります。私は直接SQLクエリを実行し、浮動小数点型(10、6)にタイプを変更することができます、なぜマイグレーションは私の精度とスケールのパラメータを無視しますか?レールの移動でフロートの精度とスケールを設定できないのはなぜですか?

def change 
    add_column :item_exifs, :geo_latitude, :float, precision: 10, scale: 6, null: false, default: 0 
    add_column :item_exifs, :geo_longitude, :float, precision: 10, scale: 6, null: false, default: 0 
end 
+0

なぜdecimalを使用しないのですか?、https:// stackoverflo w.com/questions/8514167/float-vs-decimal-in-activerecord – icemelt

+0

@icemelt私は場所があまりにも正確である必要はないので、フロートは計算を行うのが速いからです。これが移行のバグか、それとも意図しているのか不思議です。 –

+0

@rokibul hasan答えを見ると、彼はmysqlとfloatに問題があり、10進数に変更して彼のために修正しました。 – icemelt

答えて

1

10進数にタイプを変更しようと、

def change 
    add_column :item_exifs, :geo_latitude, :decimal, precision: 10, scale: 6, null: false, default: 0 
    add_column :item_exifs, :geo_longitude, :decimal, precision: 10, scale: 6, null: false, default: 0 
end 

は、いくつかのアクティブなレコードのバージョンが

Float vs Decimal in ActiveRecord

を使用するデータベースに基づいていくつかの奇妙な行動を持っているが@Rokibulハサンを見て​​@ ryan0が答えます

関連する問題