将数据库列类型更改为十进制

时间:2014-02-11 10:20:00

标签: mysql ruby-on-rails ruby-on-rails-3 database-migration

我正在使用Rails 3.2.3和MySQL作为我的数据库
我创建了一个模型affiliate_payment.rb,其列:amount,最初的数据类型为float。我尝试通过以下迁移将其更改为小数:

class ChangeAffiliateIdAmountToDecimal < ActiveRecord::Migration
  def up
    change_column :affiliate_payments, :amount, :decimal
  end

  def down
    change_column :affiliate_payments, :amount, :float
  end
end

Ran rake db:migrate ...
但是当我检查列类型进行确认时,我发现列类型现在是integer

2.0.0-p353 :101 > AffiliatePayment.columns_hash["amount"].type
 => :integer 

有人可以解释我做错了吗?

3 个答案:

答案 0 :(得分:2)

试试这个:

change_column :affiliate_payments, :amount, :decimal, :precision => 8, :scale => 2

这将成为BigDecimal

答案 1 :(得分:0)

使用新的ruby语法:

change_column :affiliate_payments, :amount, :decimal, precision: 8, scale: 2

答案 2 :(得分:-1)

嘿您已创建迁移以更改列类型,因此无需运行rake db:migrate

您必须使用下面的迁移号码

运行迁移
rake db:migrate:up VERSION = version number of migration.