Это, кажется, спросили прежде: точность десятичного числа направляющих и масштаб
Но при выполнении 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
Для этого простого тестового приложения, которое я запускаю, у меня есть установка SQLite3. Очевидно, SQLite3 не полагается на объявления типов столбцов и является более динамичным, вместо этого просматривая содержимое столбца - как было здесь наткнуто:
Изменить тип столбца в sqlite3
Я не знаю ' t проверил его, но я уверен, что поэтому схема не менялась, потому что change_column
ни на что не переводится в SQLite3.
Спасибо за ответы, ребята.
Взлом, но он должен доставить вас туда, куда вам нужно:
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
Удаление и регенерация db\schema.rb
файла.
rake db:schema:dump