Как переименовать модель ActiveRecord, которая может автоматически изменить имя таблицы в БД?

У меня есть модель "Активная запись" "автомобиль", я бы хотел изменить название этой модели для "тренировки" без изменения функций внутри, чтобы только изменить имя. Кроме того, имя таблицы следует изменить на "поезда".

Есть ли какая-нибудь команда rails, которая может сделать это за один раз? Или мне нужно вручную изменить имя в стороне класса или миграции? Если мне придется менять вручную, это будет сложно, потому что я должен также изменить другие модели, которые имеют ассоциации с моей "автомобильной" моделью.

Любые хорошие предложения?

Ответы

Ответ 1

Я бы порекомендовал следующее:

  1. Замените вручную класс модели Active Record на Train

  2. Выполните миграцию, чтобы изменить имя таблицы базы данных с автомобилей на поезда

  3. Сделайте хороший поиск, чтобы изменить ссылки с автомобиля на поезд.

Если вам постоянно нужно менять имена таблиц базы данных, вы можете пересмотреть именование таблиц более простым способом. Как и в этом случае, вы можете иметь таблицу с именем транспортных средств и поле типа, определяющее тип (например, автомобиль или поезд).

Ответ 2

Я понял следующий способ:

1, сгенерируйте файл миграции:

rails generate migration rename_cars_to_trains
  1. отредактируйте созданный файл миграции:

    class RenameCarsToTrains < ActiveRecord::Migration
      def self.up
        rename_table :cars, :trains
      end
    
      def self.down
        rename_table :trains, :cars
      end
    end
    
  2. rake db:migrate

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

Если у вас есть более эффективный способ, дайте мне знать...

Ответ 3

Я использовал следующие шаги для переименования моей модели

В возвышенном тексте:

  • нажмите cmd + shift + найдите и выберите регистр, чувствительный к регистру (см. левые кнопки). Он будет искать слово в целом проекте
  • найдите и замените "Автомобили" на "Поезда"
  • найдите и замените "Автомобиль" на "Поезд".
  • найти и заменить "автомобиль" на "поезд"
  • рельсы создают миграцию rename_cars_to_trains
  • вручную изменить следующие имена файлов

    • cars_controller
    • car_helper
    • Модель /car.rb
    • все связанные файлы в тестовой папке
  • изменить имя папки в просмотрах: автомобили для поездов

Ответ 4

Если вы используете RubyMine, перейдите в модель, щелкните правой кнопкой мыши имя класса> refactor и измените имя. RubyMine проведет рефакторинг всего и создаст новую миграцию для базы данных.