我正在使用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
有人可以解释我做错了吗?
答案 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.