Удаление модели в рельсах (реверс "rails g Model Title ...") - PullRequest
106 голосов
/ 18 августа 2011
rails g model Rating user_id:integer message:string value:integer

Как мне полностью удалить эту модель?Спасибо

Ответы [ 5 ]

183 голосов
/ 18 августа 2011
bundle exec rake db:rollback    
rails destroy model <model_name>

Когда вы генерируете модель, она создает миграцию базы данных.Если вы запустите 'destroy' для этой модели, он удалит файл миграции, но не таблицу базы данных.Так что перед запуском

bundle exec rake db:rollback
46 голосов
/ 18 августа 2011

Попробуйте это

rails destroy model Rating

Это удалит модель, миграцию, тесты и приспособления

27 голосов
/ 06 сентября 2013

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

class DropTables < ActiveRecord::Migration
  def up
    drop_table :table_you_dont_want
  end

  def down
    raise ActiveRecord::IrreversibleMigration
  end
end
15 голосов
/ 29 августа 2016
  1. Чтобы удалить миграцию (если вы уже перенесли миграцию)

    rake db:migrate:down VERSION="20130417185845" #Your migration version
    
  2. Чтобы удалить модель

    rails d model name  #name => Your model name
    
2 голосов
/ 10 сентября 2018

Вот другая реализация ответа Дженни Лэнг, которая работает для Rails 5.

Сначала создайте файл миграции:

bundle exec be rails g migration DropEpisodes

Затем заполните файл миграции следующим образом:

class DropEpisodes < ActiveRecord::Migration[5.1]
  def change
    drop_table :episodes
  end
end

Запуск rails db:migrate сбросит таблицу.Если вы запустите rails db:rollback, Rails выдаст ошибку ActiveRecord::IrreversibleMigration.

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