Как переименовать модель ActiveRecord, которая может автоматически изменить имя таблицы в БД?
У меня есть модель "Активная запись" "автомобиль", я бы хотел изменить название этой модели для "тренировки" без изменения функций внутри, чтобы только изменить имя. Кроме того, имя таблицы следует изменить на "поезда".
Есть ли какая-нибудь команда rails, которая может сделать это за один раз? Или мне нужно вручную изменить имя в стороне класса или миграции? Если мне придется менять вручную, это будет сложно, потому что я должен также изменить другие модели, которые имеют ассоциации с моей "автомобильной" моделью.
Любые хорошие предложения?
Ответы
Ответ 1
Я бы порекомендовал следующее:
Замените вручную класс модели Active Record на Train
Выполните миграцию, чтобы изменить имя таблицы базы данных с автомобилей на поезда
Сделайте хороший поиск, чтобы изменить ссылки с автомобиля на поезд.
Если вам постоянно нужно менять имена таблиц базы данных, вы можете пересмотреть именование таблиц более простым способом. Как и в этом случае, вы можете иметь таблицу с именем транспортных средств и поле типа, определяющее тип (например, автомобиль или поезд).
Ответ 2
Я понял следующий способ:
1, сгенерируйте файл миграции:
rails generate migration rename_cars_to_trains
-
отредактируйте созданный файл миграции:
class RenameCarsToTrains < ActiveRecord::Migration
def self.up
rename_table :cars, :trains
end
def self.down
rename_table :trains, :cars
end
end
-
rake db:migrate
После этих шагов имя таблицы изменилось с автомобилей на поезда, тогда мне нужно вручную изменить имена контроллеров и представлений и ассоциации...
Если у вас есть более эффективный способ, дайте мне знать...
Ответ 3
Я использовал следующие шаги для переименования моей модели
В возвышенном тексте:
Ответ 4
Если вы используете RubyMine, перейдите в модель, щелкните правой кнопкой мыши имя класса> refactor и измените имя. RubyMine проведет рефакторинг всего и создаст новую миграцию для базы данных.