Я ужасно разбираюсь в названиях и понимаю, что в моем приложении Rails есть лучший набор имен для моих моделей.
Есть ли способ использовать миграцию для переименования модели и соответствующей ей таблицы?
ruby-on-rails
migration
rails-activerecord
Readonly
источник
источник
rake db:migrate
, он потерпит неудачу. Вы могли бы вернуться и изменить эти имена в процессе миграции, но это может стать грязным. Возможно, вам лучше просто создать совершенно новую модель, чем переименовывать ее.rake db:schema:load
?rake db:migrate
создание базы данных с нуля активно не рекомендуется, именно из-за проблем, на которые указал Эндрю.Ответы:
Вот пример:
Мне пришлось пойти и переименовать файл объявления модели вручную.
Редактировать:
В Rails 3.1 и 4
ActiveRecord::Migration::CommandRecorder
знает, как отменить миграцию rename_table, поэтому вы можете сделать это:(Вам все еще нужно пройти и вручную переименовать ваши файлы.)
источник
git grep -i activit
это очень показательно.В Rails 4 все, что мне нужно было сделать, это изменить определение
И обо всех моих показателях позаботились обо мне. Мне не нужно было вручную обновлять индексы, удаляя старые и добавляя новые.
И это работает, используя изменения для повышения или понижения в отношении индексов.
источник
Другие ответы и комментарии касались переименования таблиц, переименования файлов и просмотра вашего кода.
Я хотел бы добавить еще несколько предостережений:
Давайте используем реальный пример, с которым я столкнулся сегодня: переименование модели из «Торговца» в «Бизнес».
источник
Вам также необходимо заменить ваши индексы:
И переименуйте свои файлы и т. Д. Вручную, как описано в других ответах.
Смотрите: http://api.rubyonrails.org/classes/ActiveRecord/Migration.html
Убедитесь, что вы можете выполнить откат и выполнить откат после написания этой миграции. Это может быть сложно, если вы что-то не так и застряли с миграцией, которая пытается повлиять на то, что больше не существует. Лучше всего уничтожить всю базу данных и начать заново, если вы не можете откатиться назад. Так что имейте в виду, что вам может понадобиться что-то для резервного копирования.
Кроме того: проверьте schema_db для любых соответствующих имен столбцов в других таблицах, определенных has_ или own_to или чем-то. Вам, вероятно, придется редактировать их тоже.
И, наконец, делать это без набора регрессионных тестов было бы чокнутым.
источник
Вы можете выполнить эту команду: rails gigration rename_ {old_table_name} to {new_table_name}
после того, как вы отредактируете файл и добавите этот код в метод изменения
rename_table: {old_table_name},: {new_table_name}
источник