49 votes

Comment faire pour supprimer une colonne de mon Rails de modèle?

J'ai besoin de supprimer quelques colonnes de mon rails modèle que j'ai déjà créés et ont un certain nombre de lignes d'entrées dans ce modèle. Comment faire? Les liens que les détails de la modification du schéma dans les rails ? Je suis sur les rails de la version 3.

58voto

Jason stewart Points 686

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

script/rails g migration RemoveColumns

Puis dans l'auto.jusqu'méthode de classe, retirez vos colonnes:

def self.up
  remove_column :table_name, :column_name
end

Vous pouvez les ajouter dans l'auto.en bas de la méthode de classe ainsi:

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

Le [Guide Rails][1] pour que cela se passe dans beaucoup plus de détails.

[1]: http://guides.rubyonrails.org/migrations.html"Guide Rails"

41voto

slm Points 3435

Si vous connaissez les colonnes que vous souhaitez supprimer, vous pouvez utiliser la convention: Supprimer..à Partir de.. lorsque vous nommez votre migrations. En outre, 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 des fichiers de migration:

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

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

6voto

Gediminas Points 647

Via la commande alternative que l' Add, seulement Add changement Remove:

Seule Colonne:

rails g migration RemoveColumnFromTable column:type

Plusieurs Colonnes:

rails g migration RemoveColumn1AndColumn2FromTable column1:type colummn2:type

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X