マイグレーションを使用して簡単にこれを行うことができ、Rails がコードの一部を生成します。
コマンド プロンプトから、新しい移行を作成します。
rails generate migration change_price_column_to_decimal
Rails はディレクトリに移行を作成しますdb/migrate
。ファイル名は、タイムスタンプの後に_change_price_column_to_decimal.rb
.
生成された移行で、フィールドを変換するメソッドを追加up
します。down
class ChangePriceColumnToDecimal < ActiveRecord::Migration
def up
change_column :products, :price, :decimal, :precision => 15, :scale => 2, null: false
end
def down
# Either change the column back, or mark it as irreversible with:
raise ActiveRecord::IrreversibleMigration
end
end
移行を実行するには、コマンド プロンプトから適切な rake タスクを実行します。
rake db:migrate
これにより、データベースが変換されます。浮動小数点数から 10 進数に変換すると、設定内容によっては有効桁数が失われることに注意してくださいscale
。ただし、製品の価格を扱っている場合、これはおそらく大きな問題にはなりません。