Search code examples
ruby-on-railsmigrationdecimalprecisionscale

Rails: Cannot add :precision or :scale options with change_column in a migration?


This seems to have been asked before: rails decimal precision and scale

But when running a change_column migration for :precision or :scale they don't actually affect the schema or database, but db:migrate runs without errors.

My migration file looks like this:

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

But my schema (and the data) remains as:

t.decimal  "payback_period"

Anybody else have this issue?

Thanks,

Josh


Solution

  • Does Not Work for SQLite3

    For this simple test app that I'm running I have SQLite3 setup. Apparently, SQLite3 doesn't rely on column type declarations and is more dynamic, looking at the column's content instead - as was stumbled upon here:

    Modify a Column's Type in sqlite3

    I haven't tested it but I'm sure that's why the schema wasn't being changed, because change_column doesn't translate to anything in SQLite3.

    Thanks for the replies guys.