Миграция Rails для преобразования строки в целое число?

Не могли бы вы попробовать добавить что-то вроде ниже и проверить еще раз,

module.exports.math = () => {
  return {
    add: (num1, num2) => {
       return num1 * num2;
    },
    square: (num) => {
       return num * num;
    }
  };
};
27
задан dannymcc 21 August 2010 в 09:10
поделиться

3 ответа

Не опускайте столбец, он очистит данные.

Однако вы можете попробовать

change_column :people, :company_id, :integer

, и если все значения в company_id можно преобразовать в integer, все будет хорошо.

Если это не так (то есть не все строки могут быть преобразованы по умолчанию), то вы можете сделать это в два этапа: 1) создать новый столбец, а затем загрузить company_id туда после некоторого преобразования. 2) удалите company_id, затем переименуйте новый столбец.

Вы должны быть осторожны с обоими методами (в особенности со вторым), и, возможно, вам следует сначала сделать это с копией базы данных.

34
ответ дан jigfox 28 November 2019 в 04:03
поделиться

Не опускайте столбец, используйте это

change_column :table_name, :column_name, 'integer USING CAST(column_name AS integer)'

«Подсказка», которую вы получили от PostgreSQL, в основном говорит вам, что вам нужно подтвердить, что вы хотите, чтобы это произошло, и как данные должны быть преобразованы. Чтобы подтвердить изменения, используйте блок выше в вашей миграции

46
ответ дан user3402754 28 November 2019 в 04:03
поделиться

Другие ответы верны, но вы можете сделать еще один шаг с ключевым словом :using:

change_column :people, :company_id, :integer, using: 'company_id::integer'
35
ответ дан João Souza 28 November 2019 в 04:03
поделиться
Другие вопросы по тегам:

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