Направляющие: не Может добавить: точность или: опции масштаба с change_column в миграции?

Это, кажется, спросили прежде: точность десятичного числа направляющих и масштаб

Но при выполнении a 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

Но моя схема (и данные) остается как:

t.decimal  "payback_period"

У кого-либо еще есть эта проблема?

Спасибо,

Josh

18
задан Community 23 May 2017 в 12:34
поделиться

3 ответа

Не работает для SQLite3

Для этого простого тестового приложения, которое я запускаю, у меня есть установка SQLite3. Очевидно, SQLite3 не полагается на объявления типов столбцов и является более динамичным, вместо этого просматривая содержимое столбца - как было здесь наткнуто:

Изменить тип столбца в sqlite3

Я не знаю ' t проверил его, но я уверен, что поэтому схема не менялась, потому что change_column ни на что не переводится в SQLite3.

Спасибо за ответы, ребята.

6
ответ дан 30 November 2019 в 06:59
поделиться

Взлом, но он должен доставить вас туда, куда вам нужно:

class ChangePrecisionAndScaleOfPaybackPeriodInTags < ActiveRecord::Migration
  def self.up
    execute "ALTER TABLE tags CHANGE payback_period DECIMAL(3,10)"
  end

  def self.down
    change_column :tags, :payback_period, :decimal
  end
end
0
ответ дан 30 November 2019 в 06:59
поделиться

Удаление и регенерация db\schema.rb файла.

rake db:schema:dump
1
ответ дан 30 November 2019 в 06:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: