powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Rails - обновление скрипта миграции (specially for Google: updating the migration script)
10 сообщений из 10, страница 1 из 1
Rails - обновление скрипта миграции (specially for Google: updating the migration script)
    #37448273
BPK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть программа на Rails, есть БД и какие-то скрипты миграции. Задача - поменять тип поля с BLOB на LONGBLOB так, чтобы корректно обновились скрипты миграции.

Стоит ли начать со скриптов или с изменения БД?

Если начать со скриптов, то сохранятся ли данные в БД после миграции?
Если начать со скриптов, то как это сделать правильно?

Если начать с БД, то как автоматически обновить скрипты?
...
Рейтинг: 0 / 0
Rails - обновление скрипта миграции (specially for Google: updating the migration script)
    #37448453
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BPK,

Добавить новую миграцию, которая будет добавлять нужный столбец, переливать данные и удалять старый столбец.
...
Рейтинг: 0 / 0
Rails - обновление скрипта миграции (specially for Google: updating the migration script)
    #37448481
BPK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь ГорбоносBPK,

Добавить новую миграцию, которая будет добавлять нужный столбец, переливать данные и удалять старый столбец.

Всё руками, или можно сгенерировать шаблон миграции на основе текущего вида БД?
...
Рейтинг: 0 / 0
Rails - обновление скрипта миграции (specially for Google: updating the migration script)
    #37448486
Фотография arni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) сгенерировать новую миграцию, что-то типа:
Код: plaintext
script/generate migration something_change

2) В метод миграции self.up включить код смены типа поля, что-то типа:
Код: plaintext
change_column :your_table, :your_field, :new_datatype

3) Если нужно массово обновить/пересчитать поле в процессе миграции, то в метод Up включайте запросы, по типу:
Код: plaintext
execute "update men set salary=0 where active=0"
p.s. последнее - это не "ruby way"
...
Рейтинг: 0 / 0
Rails - обновление скрипта миграции (specially for Google: updating the migration script)
    #37448561
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arni,

+1

BPK, я не знаю наличие инструментов, которые делают миграцию по готовой БД, наверное и есть, НО при разработке на рельсе краеугольным камнем является модель данных в программе, на основе которой и делаются миграции - изменения структуры БД, а не наоборот.
С другой стороны миграция это текстовый файл, который можно сгенерировать и самому на любом доступном языке :)
...
Рейтинг: 0 / 0
Rails - обновление скрипта миграции (specially for Google: updating the migration script)
    #37448601
BPK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arni2) В метод миграции self.up включить код смены типа поля, что-то типа:
Код: plaintext
change_column :your_table, :your_field, :new_datatype

А в self.down ?
...
Рейтинг: 0 / 0
Rails - обновление скрипта миграции (specially for Google: updating the migration script)
    #37448608
Фотография arni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BPKА в self.down ? тут код "обратной" миграции, если конечно изменения обратимы.
...
Рейтинг: 0 / 0
Rails - обновление скрипта миграции (specially for Google: updating the migration script)
    #37448611
BPK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arniBPKА в self.down ? тут код "обратной" миграции, если конечно изменения обратимы.
А если необратимы, то удалить self.down ?
...
Рейтинг: 0 / 0
Rails - обновление скрипта миграции (specially for Google: updating the migration script)
    #37448618
BPK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уже нашёл:
Ruby on Rails Guide: MigrationsSometimes your migration will do something which is just plain irreversible, for example it might destroy some data. In cases like those when you can’t reverse the migration you can raise ActiveRecord::IrreversibleMigration from your down method. If someone tries to revert your migration an error message will be displayed saying that it can’t be done.
...
Рейтинг: 0 / 0
Rails - обновление скрипта миграции (specially for Google: updating the migration script)
    #37448629
Фотография arni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BPKА если необратимы, то удалить self.down ? можно как пишут - через выброс исключения, но конкретно в данном случае либо оставить тело метода пустым, либо
Код: plaintext
change_column :your_table, :your_field, :old_datatype
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Rails - обновление скрипта миграции (specially for Google: updating the migration script)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]