0Pricing
Ruby Academy · Lekcja

Migracje

Ewolucja schematu

Migracje to bezpłatna lekcja Ruby Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Ruby Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Ruby Academy zawiera 4 lekcji w sumie.

Czym jest migracja?

Migracja to wersjonowany plik Ruby opisujący zmianę schematu bazy danych, na przykład utworzenie tabeli lub dodanie kolumny.

  • Migracje są kodem, dlatego przechowuje się je w systemie kontroli wersji.
  • Wszyscy członkowie zespołu stosują te same zmiany w tej samej kolejności.
  • Bazy danych nigdy nie należy modyfikować ręcznie.

Generowanie migracji

Rails generuje pliki migracji automatycznie. Na przykład rails generate migration CreateUsers tworzy plik z sygnaturą czasową w katalogu db/migrate/. Sygnatura ustala kolejność wykonywania migracji.

Tworzenie tabeli

Migracja definiuje metodę change. create_table tworzy tabelę, a t.timestamps automatycznie dodaje created_at i 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

Typy kolumn

Typowe typy kolumn są mapowane na typy bazy danych:

  • string — krótki tekst.
  • text — długi tekst.
  • integer, float, decimal — liczby.
  • boolean — wartości true/false.
  • datetime, date — wartości czasu.
create_table :products do |t|
  t.string :title
  t.text :description
  t.decimal :price
  t.boolean :active
  t.timestamps
end

Uruchamianie migracji

rails db:migrate stosuje wszystkie oczekujące migracje i aktualizuje schema.rb. Rails zapisuje informacje o wykonanych migracjach w tabeli schema_migrations, dzięki czemu każda z nich jest uruchamiana tylko raz.

Dodawanie kolumny

Aby rozszerzyć istniejącą tabelę, należy wygenerować migrację i użyć add_column. Trzeba określić tabelę, nazwę kolumny, typ oraz opcje.

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

Wycofywanie zmian

rails db:rollback cofa ostatnią migrację. Rails automatycznie odwraca metodę change, gdy operacje można odwrócić, na przykład add_column lub create_table.

Zmiany nieodwracalne

Niektórych operacji nie można automatycznie odwrócić, na przykład wykonania surowego SQL-a lub usunięcia kolumny zawierającej dane. W takich przypadkach należy zdefiniować jawne metody up i down, aby Rails wiedział, jak cofnąć zmianę.

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

Indeksy

Należy dodać indeks, aby przyspieszyć wyszukiwanie po często używanej kolumnie, takiej jak klucz obcy lub adres e-mail używany do logowania. Użycie unique: true dodatkowo wymusza unikalność na poziomie bazy danych.

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

Migracje a schema.rb

Migracje to historia zmian, a schema.rb to bieżący obraz schematu. Nowi programiści mogą uruchomić rails db:schema:load, aby natychmiast utworzyć bazę danych na podstawie tego obrazu, zamiast odtwarzać każdą migrację po kolei.

Najlepsze praktyki

Migracje powinny być bezpieczne:

  • Nie należy edytować migracji wykonanej już we współdzielonych środowiskach; trzeba napisać nową.
  • Każda migracja powinna dotyczyć jednej konkretnej zmiany.
  • Należy dodawać ograniczenia na poziomie bazy danych (null: false, indeksy), aby zapewnić integralność danych.

Szybki test

Sprawdź swoją wiedzę na temat migracji.

Podsumowanie: migracje

Poznano bezpieczny sposób rozwijania schematu:

  • Migracje to wersjonowane zmiany schematu zatwierdzane w repozytorium.
  • create_table, add_column i add_index kształtują tabele.
  • db:migrate stosuje zmiany, a db:rollback je odwraca.
  • W przypadku zmian nieodwracalnych należy używać up/down.
  • schema.rb jest bieżącym obrazem schematu.

W następnym kroku modele zostaną połączone za pomocą powiązań.

Często zadawane pytania

Czy lekcja „Migracje” jest bezpłatna?

Tak — pełny tekst „Migracje” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Ruby Academy, przejdź na CoddyKit PRO. Kurs Ruby Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Migracje”?

Ewolucja schematu Ćwiczysz Ruby Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Ruby Academy?

Nie wymagamy żadnego doświadczenia. Ruby Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Migracje”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Ruby Academy?

Tak. Każda lekcja Ruby Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Podstawy Active Record
  2. Migracje
  3. Powiązania
  4. Walidacje i zapytania
← Powrót do Ruby Academy