Il metodo up
deve essere accompagnato da un metodo down
che può essere utilizzato per annullare le modifiche della migrazione. Ad esempio, se hai scritto l'esempio nella tua domanda utilizzando su e giù si avrebbe bisogno il seguente codice:
class CreateTweets < ActiveRecord::Migration
def up
create_table :tweets do |t|
t.string :status
t.integer :zombie_id
t.timestamps
end
end
def down
drop_table :tweets
end
end
Il metodo change
, d'altra parte, può essere automaticamente invertito da Rails quindi non c'è alcun bisogno di manualmente creare un metodo down
.
change
era introdurre sostituire up
e down
perché la maggior parte down
metodi potrebbero facilmente essere previsto in base al metodo up
(nell'esempio sopra drop_table
è chiaramente il contrario di create_table
).
In situazioni in cui l'operazione inversa non può essere derivata automaticamente, è possibile utilizzare i up
e down
metodi, o chiamare il metodo reversible
dal tuo metodo change
.
Vedere sections 3.6 - 3.7 of the Rails migration guide per ulteriori informazioni.