2013-07-06 9 views

risposta

11

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.

Problemi correlati