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

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

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

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

Ответы на вопрос(7)

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

script/destroy model

или если вы что-нибудь rspec

script/destroy rspec_model

Это также удалит любые тесты спецификаций.

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

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

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

rails destroy model ModelName
rails g migration DropTableModelName

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

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

Теперь бегиdb:migrate и ты'сделано.

 Lucio07 нояб. 2018 г., 05:54
Миграционные файлы должны оставаться такими же, их модификации / удаление / восстановлениет рекомендуется.
 Satoshi Suzuki06 нояб. 2018 г., 04:09
Еще один момент. Нам нужно восстановитьdb/migrate/20181106030807_create_model_names.rb-й файл отgit checkout (или что-то в этом роде), верно?

Я хотел бы полностью избавиться от модели и ее таблицы:

rails destroy model Name
 tommybernaciak04 апр. 2018 г., 15:13
Это просто удалит файл модели. Таблица базы данных останется, это следует удалить при миграции.
 Augustin Riedinger01 апр. 2014 г., 16:33
Это победилот генерироватьremove_table миграции, но удалитеcreate один вместо. Таким образом, модель все еще будет вschema.rb...

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

Решение Вопроса

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

 brad02 янв. 2010 г., 22:04
как насчет последующих миграций, которые добавляют данные в эту модель? Сценарий / уничтожает поиск миграций или он просто удаляет исходный, который создал таблицу?
 bobbywilson003 янв. 2010 г., 04:41
Последующие миграции будут нуждаться в собственномscript/destory migration migration_name, Хороший способ думать об этом, это отмена команды genarate. Так что, нет, это также выигралt искать другие миграции, которые изменяют ту же модель.
 brad03 янв. 2010 г., 18:48
верно, тогда окончательный ответ на все это заключается в том, что я могу использовать скрипт / уничтожить, но мне также нужно вручную редактировать любые миграции, которые могут содержать ссылки на эти удаленные модели. Спасибо

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

rails destroy scaffold <modelname> -p
</modelname>

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

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

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

rake db:migrate:status

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

Запишите вседобавить х к названию модели " и аналогичные изменения в вашей модели. Они могут быть удалены с помощью:

rails d migration AddXToModelName

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

rails d model ModelName

Ваш ответ на вопрос