Comment supprimer des colonnes à l’aide de la migration Rails

Quelle est la syntaxe de suppression d’une colonne de table de firebase database via une migration Rails?

remove_column :table_name, :column_name 

Par exemple:

 remove_column :users, :hobby 

supprimerait la colonne de passe-temps de la table des utilisateurs.

Pour les anciennes versions de Rails

 ruby script/generate migration RemoveFieldNameFromTableName field_name:datatype 

Pour les rails 3 et plus

 rails generate migration RemoveFieldNameFromTableName field_name:datatype 

Rails 4 a été mis à jour. Par conséquent, la méthode de modification peut être utilisée dans la migration pour supprimer une colonne et la migration sera annulée avec succès. Veuillez lire l’avertissement suivant pour les applications Rails 3:

Rails 3 Avertissement

Veuillez noter que lorsque vous utilisez cette commande:

 rails generate migration RemoveFieldNameFromTableName field_name:datatype 

La migration générée ressemblera à ceci:

  def up remove_column :table_name, :field_name end def down add_column :table_name, :field_name, :datatype end 

Veillez à ne pas utiliser la méthode change lorsque vous supprimez des colonnes d’une table de firebase database (exemple de ce que vous ne voulez pas dans le fichier de migration dans les applications Rails 3):

  def change remove_column :table_name, :field_name end 

La méthode de modification de Rails 3 n’est pas intelligente en ce qui concerne remove_column. Vous ne pourrez donc pas annuler cette migration.

Dans une application rails4, il est également possible d’utiliser la méthode de modification pour supprimer des colonnes. Le troisième paramètre est data_type et, en option, vous pouvez donner des options. C’est un peu caché dans la section ‘Transformations disponibles’ de la documentation .

 class RemoveFieldFromTableName < ActiveRecord::Migration def change remove_column :table_name, :field_name, :data_type, {} end end 

Il y a deux bonnes façons de le faire:

remove_column

Vous pouvez simplement utiliser remove_column, comme ceci:

 remove_column :users, :first_name 

Cela ne pose aucun problème si vous ne devez modifier que votre schéma.

bloc change_table

Vous pouvez également le faire en utilisant un bloc change_table, comme ceci:

 change_table :users do |t| t.remove :first_name end 

Je préfère cela car je le trouve plus lisible, et vous pouvez apporter plusieurs modifications à la fois.

Voici la liste complète des méthodes change_table sockets en charge:

http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/change_table

dans les rails 5, vous pouvez utiliser cette commande dans le terminal:

 rails generate migration remove_COLUMNNAME_from_TABLENAME COLUMNNAME:DATATYPE 

par exemple pour supprimer la colonne access_level (ssortingng) des utilisateurs de la table:

 rails generate migration remove_access_level_from_users access_level:ssortingng 

puis lancez:

 rake db:migrate 
 rails g migration RemoveXColumnFromY column_name:data_type 

X = nom de la colonne
Y = nom de la table

MODIFIER

Changé RemoveXColumnToY à RemoveXColumnFromY selon les commentaires – fournit plus de clarté sur ce que la migration est en train de faire.

Supprimer les colonnes pour l’application RAILS 5

 rails g migration RemoveFrom [columnName:type] 

La commande ci-dessus génère un fichier de migration dans db/migrate répertoire db/migrate . Snippet Blick est l’un des exemples de colonnes supprimées de la table générées par le générateur Rails.

 class RemoveAgeFromUsers < ActiveRecord::Migration def up remove_column :users, :age end def down add_column :users, :age, :integer end end 

J'ai également créé un guide de référence rapide pour Rails, disponible ici .

 remove_column :table_name, :column_name 

( De la documentation )

Pour supprimer la colonne de la table, vous devez exécuter la migration suivante:

 rails g migration remove_column_name_from_table_name column_name:data_type 

Ensuite, exécutez la commande:

 rake db:migrate 

Donnez ci-dessous la commande, il appenda le fichier de migration seul

 rails g migration RemoveColumnFromModel 

Après avoir exécuté la commande ci-dessus, vous pouvez vérifier le fichier de migration. Le code remove_column doit y être ajouté seul

Puis migrez la firebase database

 rake db:migrate 

Pour supprimer la colonne de la table en 3 étapes faciles comme suit:

  1. écris cette commande

rails g migration remove_column_from_table_name

après avoir exécuté cette commande dans le terminal, un fichier créé avec ce nom et cet horodatage (remove_column from_table_name).

Ensuite, allez dans ce fichier.

  1. à l’intérieur du fichier, vous devez écrire

    remove_column :table_name, :column_name

  2. Enfin aller à la console et ensuite faire

    rake db:migrate

remove_column dans la méthode change vous aidera à supprimer la colonne de la table.

 class RemoveColumn < ActiveRecord::Migration def change remove_column :table_name, :column_name, :data_type end end 

Allez sur ce lien pour la référence complète: http://guides.rubyonrails.org/active_record_migrations.html

Générez une migration pour supprimer une colonne de sorte que, si elle est migrée ( rake db:migrate ), elle doit supprimer la colonne . Et il devrait append une colonne si cette migration est annulée ( rake db:rollback ).

La syntaxe:

remove_column: nom_table,: nom_colonne

Supprime la colonne, mais ne parvient pas à append la colonne à la restauration.

Exemple:

 remove_column :users, :last_name 

Notez le nom de la table pluralize: users

La syntaxe:

remove_column: nom_table,: nom_colonne,: type

Supprime la colonne, ajoute également la colonne si la migration est annulée.

Exemple:

 remove_column :users, :last_name, :ssortingng 

Heureux codage!

Par
remove_column :table_name, :column_name
dans un fichier de migration

Vous pouvez supprimer une colonne directement dans une console de rails en tapant:
ActiveRecord::Base.remove_column :table_name, :column_name