Как изменить тип столбца с целого на десятичный, с буквой после десятичной? - PullRequest
0 голосов
/ 29 февраля 2020

Я только что понял, что мой тип столбца должен быть десятичный вместо целое число

Могу ли я внести изменения непосредственно в мой seed.rb или есть что-то еще, что я должен делать?

Также как мне это сделать, если я собираюсь добавить букву после десятичной дроби?

Пример: 2.0L, 2.5L, 5.7L, etc.

Ответы [ 2 ]

2 голосов
/ 29 февраля 2020

Если вы хотите сохранить букву в вашей БД, этот тип столбца не может быть десятичным или целым числом. Строковое поле будет более подходящим для вашего случая. Я предполагаю, что ваш главный вопрос касается десятичных чисел.

Если вы хотите изменить тип столбца в БД, вы должны сделать это с помощью Миграции . Из терминала в каталоге вашего приложения запустите: bin/rails g migration changeFieldNameFromIntegerToDecimal.

. Это создаст файл миграции с отметкой времени в имени файла, в котором есть метод change, сообщающий rails, как вы хотите изменить базу данных. В этом методе изменения укажите:

def change
  change_column :table_name, :column_name, :decimal, precision: :8, scale: :2
end

параметры точности и масштаба, следующие за (ссылка выше):

precision: определяет точность для десятичных полей, представляет общее количество цифр в числе.

масштаб: Определяет масштаб для десятичных полей, представляющих количество цифр после десятичной точки.

Если вы хотите преобразовать если это строка, то файл миграции будет содержать:

def change
  change_column :table_name, :column_name, :string
end

Наконец, запустите bin/rails db:migrate из терминала в каталоге приложения, чтобы выполнить миграцию.

0 голосов
/ 29 февраля 2020

Это изменит тип столбца на десятичный. Чтобы узнать о масштабе и точности, проверьте этот вопрос Stackoverflow { ссылка } или документы https://edgeguides.rubyonrails.org/active_record_migrations.html#column - модификаторы

change_column :table_name, :column_name, :decimal, :precision => 8, :scale => 2, :default => 0
...