Ruby Academy · Lektion

Migreringar

Utveckla schemat.

Lektion 2 av 413 steg

Migreringar är en gratis lektion i Ruby Academy på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Ruby Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Ruby Academy innehåller totalt 4 lektioner.

Vad är en migration?

En migration är en versionshanterad Ruby-fil som beskriver en ändring i databasschemat, till exempel att skapa en tabell eller lägga till en kolumn.

  • Migrationer är kod och därför versionshanteras de.
  • Alla i teamet tillämpar samma ändringar i samma ordning.
  • Du redigerar aldrig databasen manuellt.

Generera en migration

Rails genererar migrationsfiler åt dig. Till exempel skapar rails generate migration CreateUsers en tidsstämplad fil i db/migrate/. Tidsstämpeln bestämmer ordningen som migrationerna körs i.

Skapa en tabell

En migration definierar en change-metod. create_table skapar en tabell och t.timestamps lägger automatiskt till created_at och 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

Kolumntyper

Vanliga kolumntyper motsvarar databastyper:

  • string kort text.
  • text lång text.
  • integer, float, decimal tal.
  • boolean true/false.
  • datetime, date tidsvärden.
create_table :products do |t|
  t.string :title
  t.text :description
  t.decimal :price
  t.boolean :active
  t.timestamps
end

Kör migrationer

rails db:migrate tillämpar alla väntande migrationer och uppdaterar schema.rb. Rails registrerar vilka migrationer som har körts i en tabell med namnet schema_migrations, så att varje migration bara körs en gång.

Lägg till en kolumn

Om du vill utöka en befintlig tabell genererar du en migration och använder add_column. Du anger tabell, kolumnnamn, typ och alternativ.

class AddAgeToUsers < ActiveRecord::Migration[7.1]
  def change
    add_column :users, :age, :integer, default: 0
  end
end

Rulla tillbaka

rails db:rollback ångrar den senaste migrationen. Rails återställer automatiskt en change-metod när åtgärderna kan ångras, till exempel add_column eller create_table.

Ändringar som inte kan återställas

Vissa åtgärder kan inte återställas automatiskt, till exempel att köra rå SQL eller ta bort en kolumn som innehåller data. För sådana åtgärder definierar du explicita metoder för up och down, så att Rails vet hur ändringen ska ångras.

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

Index

Lägg till ett index för att snabba upp sökningar på en kolumn som du ofta frågar efter, till exempel en främmande nyckel eller en e-postadress som används vid inloggning. Använd unique: true för att även framtvinga unika värden på databasnivå.

class AddIndexToUsersEmail < ActiveRecord::Migration[7.1]
  def change
    add_index :users, :email, unique: true
  end
end

Migrationer jämfört med schema.rb

Migrationer är ändringarnas historik; schema.rb är den aktuella ögonblicksbilden. Nya utvecklare kan köra rails db:schema:load för att direkt bygga databasen från ögonblicksbilden i stället för att spela upp alla migrationer.

Bästa praxis

Gör migrationerna säkra:

  • Redigera aldrig en migration som har körts i delade miljöer; skriv en ny i stället.
  • Låt varje migration fokusera på en enda ändring.
  • Lägg till begränsningar på databasnivå (null: false, indexes) för att säkerställa dataintegriteten.

Snabbkontroll

Testa dina kunskaper om migrationer.

Sammanfattning: Migrationer

Du har lärt dig att utveckla schemat på ett säkert sätt:

  • Migrationer är versionshanterade och incheckade schemaändringar.
  • create_table, add_column och add_index formar tabeller.
  • db:migrate tillämpar ändringar; db:rollback återställer dem.
  • Använd up/down för ändringar som inte kan återställas automatiskt.
  • schema.rb är den aktuella ögonblicksbilden.

Nu kopplar vi ihop modeller med associationer.

Gratis att börja

Lär dig Ruby med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
29
Lektioner
109

Vanliga frågor

Är lektionen ”Migreringar” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Ruby Academy, inklusive ”Migreringar”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Ruby Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Migreringar”?

Utveckla schemat. Ni övar på Ruby Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Ruby Academy?

Du behöver inga förkunskaper. Utbildningen i Ruby Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Migreringar”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Ruby Academy-lektionen?

Ja. Varje Ruby Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Grunderna i Active Record
  2. Migreringar
  3. Associationer
  4. Valideringar och frågor
← Tillbaka till Ruby Academy