Rails:无法在迁移中添加:precision或:scale选项和change_column?

Jos*_*ter 18 migration precision ruby-on-rails decimal scale

这似乎在之前被问过:rails decimal precision和scale

但是,在运行时,change_column迁移:precision:scale它们实际上并不影响模式或数据库,但db:migrate没有错误运行.

我的迁移文件如下所示:

class ChangePrecisionAndScaleOfPaybackPeriodInTags < ActiveRecord::Migration
  def self.up
    change_column :tags, :payback_period, :decimal, { :scale => 3, :precision => 10 }
  end

  def self.down
    change_column :tags, :payback_period, :decimal
  end
end
Run Code Online (Sandbox Code Playgroud)

但我的架构(和数据)仍然是:

t.decimal  "payback_period"
Run Code Online (Sandbox Code Playgroud)

还有其他人有这个问题吗?

谢谢,

玩笑

rtf*_*inc 35

有一个相关(但不相同)的问题.我只是在改变比例,所以当改变:scale时你需要整行:

change_column :something, :weight, :decimal, :precision => 10, :scale => 2
Run Code Online (Sandbox Code Playgroud)

省略:decimal(已经是)和:precision(已经是10)将导致迁移失败.


Jos*_*ter 6

对SQLite3不起作用

对于我正在运行的这个简单的测试应用程序,我有SQLite3设置.显然,SQLite3不依赖于列类型声明,而是更加动态,而是查看列的内容 - 正如在这里偶然发现的那样:

在sqlite3中修改列的类型

我没有测试过,但我确定这就是为什么架构没有被更改,因为change_column它没有转换为SQLite3中的任何内容.

谢谢回复人员.