Grunderna i Active Record
Grunderna i ORM.
Grunderna i Active Record är en gratis lektion i Ruby Academy på CoddyKit. Detta är lektion 1 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 Active Record?
Active Record är ORM-lagret (Object-Relational Mapper) i Rails. Det kopplar Ruby-objekt till rader i en databastabell, så att du arbetar med objekt i stället för rå SQL.
- En klass motsvarar en tabell.
- En instans motsvarar en rad.
- Ett attribut motsvarar en kolumn.
Definiera en modell
En modell är en klass som ärver från ApplicationRecord (som i sin tur ärver från ActiveRecord::Base). Enligt konventionen kopplas en modell med namnet User automatiskt till tabellen users.
class User < ApplicationRecord
end
# Maps to the 'users' table
# Columns become attributes automaticallyKonvention framför konfiguration
Active Record använder namnkonventioner så att du behöver skriva mindre konfiguration:
- Klassnamn står i singular och CamelCase:
User. - Tabellnamn står i plural och snake_case:
users. - Primärnyckeln är som standard
id.
Följ konventionerna så sköts det mesta av kopplingen automatiskt.
Skapa poster
Skapa rader med create, eller bygg en post och kör sedan save. create skapar en instans och sparar den i ett enda anrop.
user = User.create(name: "Ada", email: "ada@example.com")
# Or in two steps:
other = User.new(name: "Linus")
other.email = "linus@example.com"
other.saveLäs poster
Hämta poster med sökmetoder:
User.find(1)via primärnyckeln (kastar ett undantag om posten saknas).User.find_by(email: 'a@b.com')via valfri kolumn (returnerar nil om posten saknas).User.allför alla rader.User.firstochUser.last.
user = User.find(1)
admin = User.find_by(role: "admin")
everyone = User.allUppdatera poster
Ändra attribut och kör sedan save, eller använd update för att tilldela värden och spara i samma steg. update returnerar true eller false beroende på valideringen.
user = User.find(1)
user.update(name: "Ada Lovelace")
# Equivalent two-step form:
user.name = "Ada Lovelace"
user.saveTa bort poster
Ta bort rader med destroy (kör återanrop och hanterar associationer) eller delete (direkt SQL som hoppar över återanrop). Föredra destroy om du inte har ett särskilt skäl att kringgå återanrop.
user = User.find(1)
user.destroy
# Bulk destroy:
User.where(active: false).destroy_allAttribut och spårning av ändringar
Active Record spårar osparade ändringar. Metoder som changed?, changes och name_was visar vad som har ändrats innan du sparar. Det är användbart i återanrop och loggning.
user = User.find(1)
user.name = "New Name"
puts user.changed? # true
puts user.name_was # old value
puts user.changes.inspectFilen schema.rb
Active Record läser tabellstrukturen från databasen, inte från modellen. Den aktuella strukturen återspeglas i db/schema.rb, som genereras från migrationer. Du behöver sällan redigera den manuellt.
Vart tar SQL vägen?
Active Record omvandlar dina metodanrop till SQL i bakgrunden. User.find(1) blir SELECT * FROM users WHERE id = 1 LIMIT 1. Du kan se den genererade SQL-frågan med User.where(active: true).to_sql.
sql = User.where(active: true).to_sql
# => SELECT "users".* FROM "users" WHERE "users"."active" = TRUEVarför är en ORM användbar?
Active Record ger dig:
- Databassoberoende kod (PostgreSQL, MySQL, SQLite).
- Skydd mot SQL-injektion genom parametriserade frågor.
- Läsbar, objektorienterad åtkomst till data.
Du använder rå SQL endast i särskilda fall.
Snabbkontroll
Testa dina kunskaper om grunderna i Active Record.
Sammanfattning: Grunderna i Active Record
Du har lärt dig grunderna i ORM:
- En klass motsvarar en tabell och en instans motsvarar en rad.
- Konvention framför konfiguration hanterar namngivningen.
- CRUD:
create,find/find_by,update,destroy. - Spårning av ändringar visar osparade ändringar.
- Active Record genererar säker SQL åt dig.
Nu hanterar vi databasschemat med migrationer.
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 ”Grunderna i Active Record” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Ruby Academy, inklusive ”Grunderna i Active Record”, 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 ”Grunderna i Active Record”?
Grunderna i ORM. 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 1 av 4.
Hur lång tid tar lektionen ”Grunderna i Active Record”?
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
- Grunderna i Active Record
- Migreringar
- Associationer
- Valideringar och frågor