Podstawy Active Record
Podstawy ORM
Podstawy Active Record to bezpłatna lekcja Ruby Academy na CoddyKit. To lekcja 1 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 Active Record?
Active Record to warstwa ORM (mapowania obiektowo-relacyjnego) w Rails. Łączy obiekty Ruby z wierszami tabeli bazy danych, dzięki czemu można pracować z obiektami zamiast z surowym SQL.
- Klasa odwzorowuje tabelę.
- Instancja odwzorowuje wiersz.
- Atrybut odwzorowuje kolumnę.
Definiowanie modelu
Model to klasa dziedzicząca po ApplicationRecord (który dziedziczy po ActiveRecord::Base). Zgodnie z konwencją model User jest automatycznie mapowany na tabelę users.
class User < ApplicationRecord
end
# Maps to the 'users' table
# Columns become attributes automaticallyKonwencja zamiast konfiguracji
Active Record korzysta z konwencji nazewniczych, dzięki czemu trzeba pisać mniej konfiguracji:
- Nazwy klas są w liczbie pojedynczej i zapisane w stylu CamelCase:
User. - Nazwy tabel są w liczbie mnogiej i zapisane w stylu snake_case:
users. - Domyślnym kluczem głównym jest
id.
Przestrzeganie konwencji sprawia, że większość połączeń konfiguruje się automatycznie.
Tworzenie rekordów
Wiersze można tworzyć za pomocą create albo najpierw zbudować je, a następnie użyć save. create tworzy instancję i zapisuje ją w jednym wywołaniu.
user = User.create(name: "Ada", email: "ada@example.com")
# Or in two steps:
other = User.new(name: "Linus")
other.email = "linus@example.com"
other.saveOdczytywanie rekordów
Rekordy można pobierać za pomocą metod wyszukujących:
User.find(1)wyszukuje po kluczu głównym (zgłasza wyjątek, jeśli rekordu nie ma).User.find_by(email: 'a@b.com')wyszukuje po dowolnej kolumnie (zwraca nil, jeśli rekordu nie ma).User.allzwraca wszystkie wiersze.User.firstiUser.lastzwracają odpowiednio pierwszy i ostatni rekord.
user = User.find(1)
admin = User.find_by(role: "admin")
everyone = User.allAktualizowanie rekordów
Atrybuty można zmienić, a następnie użyć save, albo użyć update, aby przypisać wartości i zapisać je jednocześnie. update zwraca true lub false zależnie od wyniku walidacji.
user = User.find(1)
user.update(name: "Ada Lovelace")
# Equivalent two-step form:
user.name = "Ada Lovelace"
user.saveUsuwanie rekordów
Wiersze można usuwać za pomocą destroy (uruchamia callbacki i obsługuje powiązania) albo delete (wykonuje bezpośredni SQL i pomija callbacki). Należy preferować destroy, chyba że istnieje powód, aby pominąć callbacki.
user = User.find(1)
user.destroy
# Bulk destroy:
User.where(active: false).destroy_allAtrybuty i śledzenie zmian
Active Record śledzi niezapisane zmiany. Metody takie jak changed?, changes i name_was informują, które wartości uległy zmianie przed zapisem. Jest to przydatne w callbackach i logowaniu.
user = User.find(1)
user.name = "New Name"
puts user.changed? # true
puts user.name_was # old value
puts user.changes.inspectPlik schema.rb
Active Record odczytuje strukturę tabel bezpośrednio z bazy danych, a nie z modelu. Bieżąca struktura jest odwzorowana w pliku db/schema.rb, generowanym na podstawie migracji. Rzadko trzeba edytować go ręcznie.
Gdzie trafia SQL?
Active Record w tle zamienia wywołania metod na SQL. User.find(1) staje się SELECT * FROM users WHERE id = 1 LIMIT 1. Wygenerowany SQL można wyświetlić za pomocą User.where(active: true).to_sql.
sql = User.where(active: true).to_sql
# => SELECT "users".* FROM "users" WHERE "users"."active" = TRUEDlaczego ORM jest pomocny
Active Record zapewnia:
- kod niezależny od bazy danych (PostgreSQL, MySQL, SQLite),
- ochronę przed SQL injection dzięki zapytaniom parametryzowanym,
- czytelny, obiektowy dostęp do danych.
Po surowy SQL sięga się tylko w szczególnych przypadkach.
Szybki test
Sprawdź swoją wiedzę na temat podstaw Active Record.
Podsumowanie: podstawy Active Record
Poznano podstawy ORM:
- Klasa odwzorowuje tabelę, a instancja — wiersz.
- Konwencja zamiast konfiguracji obsługuje nazewnictwo.
- CRUD:
create,find/find_by,update,destroy. - Śledzenie zmian pokazuje niezapisane modyfikacje.
- Active Record generuje bezpieczny SQL.
W następnym kroku schemat bazy danych będzie zarządzany za pomocą migracji.
Często zadawane pytania
Czy lekcja „Podstawy Active Record” jest bezpłatna?
Tak — pełny tekst „Podstawy Active Record” 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 „Podstawy Active Record”?
Podstawy ORM Ć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 1 z 4.
Ile czasu zajmuje lekcja „Podstawy Active Record”?
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
- Podstawy Active Record
- Migracje
- Powiązania
- Walidacje i zapytania