web-dev-qa-db-fra.com

Comment supprimer une colonne de mon modèle Rails?

Je dois supprimer quelques colonnes de mon modèle Rails que j'ai déjà créé et avoir des entrées de ligne dans ce modèle. Comment faire? Des liens contenant des détails pour modifier le schéma dans Rails? J'utilise Rails version 3.

49
Hemanth

Pour supprimer une colonne de base de données, vous devez générer une migration:

script/Rails g migration RemoveColumns

Ensuite, dans la méthode de classe self.up, supprimez vos colonnes:

def self.up
  remove_column :table_name, :column_name
end

Vous pouvez également les ajouter à nouveau dans la méthode de classe self.down:

def self.down
  add_column :table_name, :column_name, :type
end

Le Rails Guide pour cela va plus en détail.

58
Jason stewart

Si vous connaissez les colonnes que vous souhaitez supprimer, vous pouvez utiliser la convention: Remove..From .. pour nommer vos migrations. De plus, vous pouvez inclure les noms de colonne lors de l'exécution de la commande de migration.

La forme de la commande:

Rails g migration Remove..From.. col1:type col2:type col3:type

Par exemple:

Rails g migration RemoveProjectIDFromProjects project_id:string

génère le fichier de migration suivant:

class RemoveProjectIdFromProjects < ActiveRecord::Migration
  def self.up
    remove_column :projects, :project_id
  end

  def self.down
    add_column :projects, :project_id, :string
  end
end
41
slm

Via l'alternative de commande comme Add, changez seulement Add en Remove:

Seule colonne:

Rails g migration RemoveColumnFromTable column:type

Colonnes multiples:

Rails g migration RemoveColumn1AndColumn2FromTable column1:type colummn2:type
5
Gediminas