web-dev-qa-db-fra.com

Suppression d'une table du schéma - Rails

Je souhaite supprimer une table de mon schéma. J'ai créé la base de données lorsque j'ai démarré le projet et je souhaite que la table soit supprimée. Quelle est la meilleure façon de procéder?

J'ai essayé Rails g migration drop table :installs mais cela crée juste une migration vide?

Schéma:

create_table "installs", force: :cascade do |t|
    t.string   "email",                  default: "", null: false
    t.string   "encrypted_password",     default: "", null: false
    t.string   "reset_password_token"
    t.datetime "reset_password_sent_at"
    t.datetime "remember_created_at"
    t.integer  "sign_in_count",          default: 0,  null: false
    t.datetime "current_sign_in_at"
    t.datetime "last_sign_in_at"
    t.string   "current_sign_in_ip"
    t.string   "last_sign_in_ip"
    t.datetime "created_at",                          null: false
    t.datetime "updated_at",                          null: false
  end

add_index "installs", ["email"], name: "index_installs_on_email", unique: true
add_index "installs", ["reset_password_token"], name: "index_installs_on_reset_password_token", unique: true
13
Bitwise

Si vous créez une migration vide en exécutant:
Rails g migration DropInstalls
ou:
Rails generate migration DropInstalls

Vous pouvez ensuite l'ajouter à cette migration vide:

class DropInstalls < ActiveRecord::Migration
  def change
    drop_table :installs
  end
end

Exécutez ensuite rake db:migrate dans la ligne de commande qui devrait supprimer la table Installs

40
Luka Kerr

Je trouve qu'il est plus facile d'utiliser Rails Console pour résoudre ce problème. Supposons que vous souhaitiez supprimer un tableau de "commentaires" d'une application de blog. Vous pouvez le faire en effectuant les tâches suivantes à partir de la ligne de commande (par exemple, Terminal).

La première étape:

$ Rails console 

Deuxième étape:

$ ActiveRecord::Migration.drop_table(:comments)

Troisième étape:

$ rake db:migrate

Allez vérifier votre schema.rb pour voir que la table a été supprimée.

6
WesleyAC