Рельсы удаляют старые модели с миграциями

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

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

Есть ли у кого-нибудь советы по наилучшему способу сделать это?

Ответы

Ответ 1

Как насчет выполнения ruby script/destroy model? Это должно заботиться о модели и миграции.

Ответ 2

Если вы хотите полностью избавиться от модели и ее таблицы, выполните следующие действия:

rails destroy model Name

Ответ 3

Все в одном решении.

Выполните следующие команды:

rails destroy model ModelName
rails g migration DropTableModelName

Первый будет генерировать новый файл миграции, который должен выглядеть следующим образом:

class DropTableModelName < ActiveRecord::Migration
  def change
    drop_table :model_name
  end
end

Теперь запустите db:migrate, и все готово.

Ответ 4

Вопрос немного устарел, но я просто сделал:

rails destroy scaffold <ModelName> -p

Флаг -p показывает "притворный" вывод, который хорош для того, чтобы увидеть, что произойдет. Удалите флаг "-p", и результаты будут совпадать с результатом. Это очистило всю коллекцию файлов M-V-C + тестирование + js файлов + исходную миграцию, без проблем.

Я предполагаю, что если вы тот, кто любит вручную редактировать свои миграции и включать в себя несколько шагов в каждом, потеря первоначальной миграции может сломать db: setup, поэтому покупатель остерегается. Сохранение одного действия == один файл миграции должен избегать этого потенциального snafu.

Ответ 5

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

Ответ 6

В зависимости от того, насколько вы находитесь в разработке или производстве, вы можете безопасно переносить модели, используя миграцию для удаления/резервного копирования данных, а что нет. Затем, как предположил bobbywilson0, используя

script/destroy model

или если вы rspec ничего

script/destroy rspec_model

Это также устранит любые тесты.

Или вы всегда можете просто перетащить их в папку мусора.

Ответ 7

Если вы предпочитаете получить ответ на основе руководства:

Сначала выполните следующую команду, чтобы определить, какие миграции вы хотите удалить:

rake db:migrate:status

Не стесняйтесь grep -i на нем, если вы уверены в своей схеме именования.

Обратите внимание на все "добавить x к имени модели" и аналогичные изменения в вашей модели. Их можно удалить, используя:

rails d migration AddXToModelName

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

rails d model ModelName