Ответ 1
Как насчет выполнения ruby script/destroy model
? Это должно заботиться о модели и миграции.
У меня есть куча моделей рельсов, которые я переписываю в одну модель, чтобы упростить мой код и уменьшить ненужные таблицы.
Мне интересно, какой лучший способ удалить класс модели и ее таблицу. Я хочу, чтобы прошлые миграции все еще были успешными, но я не хочу оставлять пустые модели. Нужно ли вручную удалять старые миграции, ссылающиеся на эти модели, а затем вручную удалять файлы классов?
Есть ли у кого-нибудь советы по наилучшему способу сделать это?
Как насчет выполнения ruby script/destroy model
? Это должно заботиться о модели и миграции.
Если вы хотите полностью избавиться от модели и ее таблицы, выполните следующие действия:
rails destroy model Name
Все в одном решении.
Выполните следующие команды:
rails destroy model ModelName
rails g migration DropTableModelName
Первый будет генерировать новый файл миграции, который должен выглядеть следующим образом:
class DropTableModelName < ActiveRecord::Migration
def change
drop_table :model_name
end
end
Теперь запустите db:migrate
, и все готово.
Вопрос немного устарел, но я просто сделал:
rails destroy scaffold <ModelName> -p
Флаг -p показывает "притворный" вывод, который хорош для того, чтобы увидеть, что произойдет. Удалите флаг "-p", и результаты будут совпадать с результатом. Это очистило всю коллекцию файлов M-V-C + тестирование + js файлов + исходную миграцию, без проблем.
Я предполагаю, что если вы тот, кто любит вручную редактировать свои миграции и включать в себя несколько шагов в каждом, потеря первоначальной миграции может сломать db: setup, поэтому покупатель остерегается. Сохранение одного действия == один файл миграции должен избегать этого потенциального snafu.
Вы можете взглянуть на это в рельсы. Но я предлагаю, если это возможно, вы должны удалить модели и все ссылки на модели. Вероятно, это сэкономит время, так как вам не нужно поддерживать мертвый код в базе кода.
В зависимости от того, насколько вы находитесь в разработке или производстве, вы можете безопасно переносить модели, используя миграцию для удаления/резервного копирования данных, а что нет. Затем, как предположил bobbywilson0, используя
script/destroy model
или если вы rspec ничего
script/destroy rspec_model
Это также устранит любые тесты.
Или вы всегда можете просто перетащить их в папку мусора.
Если вы предпочитаете получить ответ на основе руководства:
Сначала выполните следующую команду, чтобы определить, какие миграции вы хотите удалить:
rake db:migrate:status
Не стесняйтесь grep -i
на нем, если вы уверены в своей схеме именования.
Обратите внимание на все "добавить x к имени модели" и аналогичные изменения в вашей модели. Их можно удалить, используя:
rails d migration AddXToModelName
Сделайте это для каждой миграции, кроме первоначальной миграции. Следующая команда позаботится о первоначальной миграции создания и файлах, связанных с моделью:
rails d model ModelName