0Pricing
Ruby Academy · Lekcja

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 automatically

Konwencja 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.save

Odczytywanie 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.all zwraca wszystkie wiersze.
  • User.first i User.last zwracają odpowiednio pierwszy i ostatni rekord.
user = User.find(1)
admin = User.find_by(role: "admin")
everyone = User.all

Aktualizowanie 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.save

Usuwanie 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_all

Atrybuty 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.inspect

Plik 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" = TRUE

Dlaczego 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

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