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
endTypy 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
endUruchamianie 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
endWycofywanie 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
endIndeksy
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
endMigracje 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_columniadd_indexkształtują tabele.db:migratestosuje zmiany, adb:rollbackje odwraca.- W przypadku zmian nieodwracalnych należy używać
up/down. schema.rbjest 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.