0Pricing
Ruby Academy · Lezione

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
end

Tipi di colonna

I tipi di colonna comuni corrispondono ai tipi del database:

  • string per il testo breve.
  • text per il testo lungo.
  • integer, float, decimal per i numeri.
  • boolean per i valori true/false.
  • datetime, date per i valori temporali.
create_table :products do |t|
  t.string :title
  t.text :description
  t.decimal :price
  t.boolean :active
  t.timestamps
end

Eseguire 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
end

Eseguire 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
end

Indici

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
end

Migrazioni 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_column e add_index definiscono la struttura delle tabelle.
  • db:migrate applica le modifiche; db:rollback le annulla.
  • Utilizzi up/down per 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.

Tutte le lezioni di questo corso

  1. Basi di Active Record
  2. Migrazioni
  3. Associazioni
  4. Validazioni e query
← Torna a Ruby Academy