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

У меня есть модель Active Car "Record", я хотел бы изменить название этой модели на "поезд" без изменения функций внутри, то есть только изменить имя. Также имя таблицы должно быть изменено на «поезда».

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

Какие-нибудь хорошие предложения?

Ответы [ 3 ]

32 голосов
/ 28 января 2011

Я разобрался следующим образом:

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

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

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

18 голосов
/ 28 января 2011

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

1) Изменить вручную класс модели Active Record на Train

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

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

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

3 голосов
/ 01 мая 2014

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

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

  1. нажмите cmd + shift + find и выберите поиск с учетом регистра (см. Левые кнопки).Он будет искать слово во всем проекте
  2. искать и заменять «Автомобили» на «Поезда»
  3. искать и заменять «Автомобиль» на «Поезд»
  4. искать и заменять «автомобиль»'to' train '
  5. рельсы генерируют миграцию* car_helper
  6. Model / car.rb
  7. все связанные файлы в тестовой папке
  8. изменить имя папки в представлениях: автомобили на поезда

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...