Migrazioni
Far evolvere lo schema
Migrazioni è una lezione Ruby Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Ruby Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Ruby Academy include 4 lezioni in totale.
Che cos'è una migrazione?
Una migrazione è un file Ruby versionato che descrive una modifica allo schema del database, ad esempio la creazione di una tabella o l'aggiunta di una colonna.
- Le migrazioni sono codice, quindi vengono salvate nel controllo versione.
- Tutti i membri del team applicano le stesse modifiche nello stesso ordine.
- Non si modifica mai il database manualmente.
Generare una migrazione
Rails genera i file di migrazione al posto suo. Ad esempio, rails generate migration CreateUsers crea un file con timestamp nella cartella db/migrate/. Il timestamp stabilisce l'ordine di esecuzione delle migrazioni.
Creare una tabella
Una migrazione definisce un metodo change. create_table crea una tabella; t.timestamps aggiunge automaticamente created_at e updated_at.
class CreateUsers < ActiveRecord::Migration[7.1]
def change
create_table :users do |t|
t.string :name
t.string :email
t.timestamps
end
end
endTipi di colonna
I tipi di colonna comuni corrispondono ai tipi del database:
stringper il testo breve.textper il testo lungo.integer,float,decimalper i numeri.booleanper i valori true/false.datetime,dateper i valori temporali.
create_table :products do |t|
t.string :title
t.text :description
t.decimal :price
t.boolean :active
t.timestamps
endEseguire le migrazioni
rails db:migrate applica tutte le migrazioni in sospeso e aggiorna schema.rb. Rails registra le migrazioni già eseguite in una tabella schema_migrations, così ciascuna viene eseguita una sola volta.
Aggiungere una colonna
Per estendere una tabella esistente, generi una migrazione e utilizzi add_column. Deve specificare la tabella, il nome della colonna, il tipo e le opzioni.
class AddAgeToUsers < ActiveRecord::Migration[7.1]
def change
add_column :users, :age, :integer, default: 0
end
endEseguire il rollback
rails db:rollback annulla l'ultima migrazione. Rails inverte automaticamente un metodo change quando le operazioni sono reversibili, come add_column o create_table.
Modifiche irreversibili
Alcune operazioni non possono essere invertite automaticamente, come l'esecuzione di SQL grezzo o la rimozione di una colonna contenente dati. In questi casi, definisca metodi up e down espliciti, così Rails saprà come annullare la modifica.
class ChangeData < ActiveRecord::Migration[7.1]
def up
execute "UPDATE users SET active = TRUE"
end
def down
execute "UPDATE users SET active = FALSE"
end
endIndici
Aggiunga un indice per velocizzare le ricerche su una colonna interrogata spesso, ad esempio una chiave esterna o un indirizzo email utilizzato per l'accesso. Utilizzi unique: true per imporre l'univocità anche a livello di database.
class AddIndexToUsersEmail < ActiveRecord::Migration[7.1]
def change
add_index :users, :email, unique: true
end
endMigrazioni e schema.rb
Le migrazioni rappresentano la cronologia delle modifiche; schema.rb è l'istantanea corrente. I nuovi sviluppatori possono eseguire rails db:schema:load per creare immediatamente il database a partire dall'istantanea, invece di rieseguire ogni migrazione.
Buone pratiche
Mantenga le migrazioni sicure:
- Non modifichi mai una migrazione già eseguita in ambienti condivisi; ne scriva una nuova.
- Mantenga ogni migrazione concentrata su una sola modifica.
- Aggiunga vincoli a livello di database (null: false, indici) per garantire l'integrità.
Verifica rapida
Verifichi la propria comprensione delle migrazioni.
Riepilogo: migrazioni
Ha imparato a far evolvere lo schema in modo sicuro:
- Le migrazioni sono modifiche allo schema versionate e salvate nel controllo versione.
create_table,add_columneadd_indexdefiniscono la struttura delle tabelle.db:migrateapplica le modifiche;db:rollbackle annulla.- Utilizzi
up/downper le modifiche irreversibili. schema.rbè l'istantanea corrente.
Ora collegherà i modelli tra loro con le associazioni.
Domande Frequenti
La lezione «Migrazioni» è gratuita?
Sì — il testo completo di «Migrazioni» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Ruby Academy, passa a CoddyKit PRO. Il corso Ruby Academy include 4 lezioni in totale.
Cosa imparerò in «Migrazioni»?
Far evolvere lo schema Eserciti Ruby Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Ruby Academy?
Non è richiesta alcuna esperienza precedente. Ruby Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Migrazioni»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Ruby Academy?
Sì. Ogni lezione Ruby Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.