【问题标题】:Change database column type to decimal将数据库列类型更改为十进制
【发布时间】:2014-03-09 01:45:48
【问题描述】:

我正在使用 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

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

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

谁能解释我做错了什么?

【问题讨论】:

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


    【解决方案1】:

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

    您必须使用如下迁移编号运行迁移

    rake db:migrate:up VERSION = version number of migration.
    

    【讨论】:

    • 我不认为这是问题所在。列类型确实从浮点数更改为整数,因此运行了迁移。
    • 我没有得到你。
    【解决方案2】:

    试试这个:

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

    这将变成BigDecimal

    【讨论】:

      【解决方案3】:

      将此与新的 ruby​​ 语法一起使用:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-26
        • 1970-01-01
        • 1970-01-01
        • 2021-08-09
        • 2011-08-20
        • 2021-09-29
        • 1970-01-01
        • 2021-03-29
        相关资源
        最近更新 更多