Как изменить структуру существующих столбцов, основываясь на старых значениях при миграции? - PullRequest
0 голосов
/ 29 января 2019

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

Чтобы прояснить ситуацию, я приведу пример того, что произошло в моем проекте.

Есть таблица users.Эта таблица содержит следующие столбцы:

  • id

  • user_type

  • описание

description это просто строка JSON, которая выглядит как в старой реализации,

  • first_name

  • last_name

  • адрес

После изменений вместо first_name и last_name у нас есть full_name, только для пользователей с типом «клиент».

Итак, как я могу перенести мои старые данные в новый формат?Спасибо.

1 Ответ

0 голосов
/ 29 января 2019

Ваша соответствующая модель User должна иметь следующее,

serialize :description, Hash

Попробуйте записать рейк по указанному ниже пути,

lib / tasks / update_users.rake

namespace :update_users do

  desc 'Update description for full name for all user'

  task update_description: :environment do
    User.all.each do |user|
      user.description[:full_name] = user.description.delete(:first_name) + ' ' + user.description.delete(:last_name)
      user.save(validate: false)
    end
  end

end

И запустить rake as, rake update_users:update_description

Возможно, вы сможете запустить код через консоль rails,

User.all.each do |user|
  user.description[:full_name] = user.description.delete(:first_name) + ' ' + user.description.delete(:last_name)
  user.save(validate: false)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...