Sebbene la risposta accettata sia eccellente, volevo aggiungere una risposta qui che, si spera, si occupi meglio della domanda dei poster originali, parte 2, per i non esperti come me.
- Come creo una migrazione per sostituire il tipo di quella colonna
generazione di migrazione di scaffold
Puoi generare una migrazione per mantenere la tua modifica digitando nella tua console (sostituisci semplicemente il table
nome della tabella e il column
nome della colonna)
rails generate migration change_table_column
Questo genererà una migrazione scheletrica all'interno della tua cartella Rails application / db / migrate /. Questa migrazione è un segnaposto per il codice di migrazione.
Ad esempio, voglio creare una migrazione per cambiare il tipo di una colonna da string
a text
, in una tabella chiamata TodoItems:
class ChangeTodoItemsDescription < ActiveRecord::Migration
def change
# enter code here
change_column :todo_items, :description, :text
end
end
Esecuzione della migrazione
Una volta inserito il codice per modificare la colonna, esegui:
rake db:migrate
Per applicare la tua migrazione. Se commetti un errore puoi sempre annullare la modifica con:
rake db:rollack
Metodi su e giù
I riferimenti Up
e i Down
metodi di risposta accettati , invece del Change
metodo più recente . Dal momento che rails 3.2 i metodi Up e Down del vecchio stile presentavano alcuni vantaggi rispetto al metodo Change più recente. Evita "Su e Giù" ActiveRecord::IrreversibleMigration exception
. Dal rilascio di Rails 4 puoi usare reversible
per evitare questo errore:
class ChangeProductsPrice < ActiveRecord::Migration
def change
reversible do |dir|
change_table :products do |t|
dir.up { t.change :price, :string }
dir.down { t.change :price, :integer }
end
end
end
end
Divertiti con Rails :)