Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Removing a model in rails (reverse of "rails g model Title...")

People also ask

How do you undo a model in rails?

Ctrl+Z in Rails 5: Undo Tables, Models, and Controllers.

How do I remove attributes from a model?

From Model Operations View select the Manage Attributes operation. From the Settings section, select the Remove Attribute option. From the dropdown list select the attribute that has to be removed (or select the Remove All check-box, if you need to remove all the attributes from the class). Click on the Execute button.

What is a model in a rails application?

A Rails Model is a Ruby class that can add database records (think of whole rows in an Excel table), find particular data you're looking for, update that data, or remove data. These common operations are referred to by the acronym CRUD--Create, Remove, Update, Destroy.


When you generate a model, it creates a database migration. If you run 'destroy' on that model, it will delete the migration file, but not the database table. So before run

bundle exec rails db:rollback
rails destroy model <model_name>

For rails versions before 5.0 and higher use rake instead of rails

bundle exec rake db:rollback   
rails destroy model <model_name>

Try this

rails destroy model Rating

It will remove model, migration, tests and fixtures


For future questioners: If you can't drop the tables from the console, try to create a migration that drops the tables for you. You should create a migration and then in the file note tables you want dropped like this:

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

  def down
    raise ActiveRecord::IrreversibleMigration
  end
end

  1. To remove migration (if you already migrated the migration)

    rake db:migrate:down VERSION="20130417185845" #Your migration version
    
  2. To remove Model

    rails d model name  #name => Your model name
    

Here's a different implementation of Jenny Lang's answer that works for Rails 5.

First create the migration file:

bundle exec be rails g migration DropEpisodes

Then populate the migration file as follows:

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

Running rails db:migrate will drop the table. If you run rails db:rollback, Rails will throw a ActiveRecord::IrreversibleMigration error.