0Pricing
Ruby Academy · Lezione

Basi di Active Record

Fondamenti degli ORM

Basi di Active Record è una lezione Ruby Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Ruby Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Ruby Academy include 4 lezioni in totale.

Che cos'è Active Record?

Active Record è il livello ORM (Object-Relational Mapper) di Rails. Collega gli oggetti Ruby alle righe di una tabella del database, consentendo di lavorare con gli oggetti invece che con SQL grezzo.

  • Una classe corrisponde a una tabella.
  • Un'istanza corrisponde a una riga.
  • Un attributo corrisponde a una colonna.

Definire un modello

Un modello è una classe che eredita da ApplicationRecord (che a sua volta eredita da ActiveRecord::Base). Per convenzione, un modello User viene associato automaticamente alla tabella users.

class User < ApplicationRecord
end

# Maps to the 'users' table
# Columns become attributes automatically

Convenzione sulla configurazione

Active Record utilizza convenzioni di denominazione, così è necessario scrivere meno configurazione:

  • I nomi delle classi sono al singolare e in CamelCase: User.
  • I nomi delle tabelle sono al plurale e in snake_case: users.
  • La chiave primaria predefinita è id.

Seguendo le convenzioni, la maggior parte dei collegamenti viene configurata automaticamente.

Creare record

Crei le righe con create, oppure le costruisca e poi esegua save. create istanzia e salva in un'unica chiamata.

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

Leggere i record

Recuperi i record con i metodi di ricerca:

  • User.find(1) tramite chiave primaria (genera un'eccezione se il record non esiste).
  • User.find_by(email: 'a@b.com') tramite una qualsiasi colonna (restituisce nil se il record non esiste).
  • User.all per recuperare tutte le righe.
  • User.first e User.last.
user = User.find(1)
admin = User.find_by(role: "admin")
everyone = User.all

Aggiornare i record

Modifichi gli attributi e poi esegua save, oppure utilizzi update per assegnare i valori e salvare con un'unica operazione. update restituisce true o false in base all'esito della validazione.

user = User.find(1)
user.update(name: "Ada Lovelace")

# Equivalent two-step form:
user.name = "Ada Lovelace"
user.save

Eliminare i record

Rimuova le righe con destroy (esegue callback e associazioni) oppure con delete (esegue direttamente SQL e ignora i callback). Preferisca destroy, a meno che non abbia un motivo per ignorare i callback.

user = User.find(1)
user.destroy

# Bulk destroy:
User.where(active: false).destroy_all

Attributi e tracciamento delle modifiche

Active Record tiene traccia delle modifiche non salvate. Metodi come changed?, changes e name_was indicano quali attributi sono stati modificati prima del salvataggio. Questo è utile nei callback e nella registrazione degli eventi.

user = User.find(1)
user.name = "New Name"
puts user.changed?      # true
puts user.name_was      # old value
puts user.changes.inspect

Il file schema.rb

Active Record legge la struttura delle tabelle dal database, non dal modello. La struttura corrente è rispecchiata in db/schema.rb, generato dalle migrazioni. Raramente è necessario modificarlo manualmente.

Dove finisce SQL?

Active Record trasforma in SQL le chiamate ai metodi, dietro le quinte. User.find(1) diventa SELECT * FROM users WHERE id = 1 LIMIT 1. È possibile visualizzare l'SQL generato con User.where(active: true).to_sql.

sql = User.where(active: true).to_sql
# => SELECT "users".* FROM "users" WHERE "users"."active" = TRUE

Perché utilizzare un ORM

Active Record offre:

  • Codice indipendente dal database (PostgreSQL, MySQL, SQLite).
  • Protezione dall'iniezione SQL tramite query parametrizzate.
  • Accesso ai dati leggibile e orientato agli oggetti.

Si ricorre a SQL grezzo solo in casi particolari.

Verifica rapida

Verifichi la propria comprensione dei concetti di base di Active Record.

Riepilogo: nozioni di base di Active Record

Ha appreso i fondamenti degli ORM:

  • Una classe corrisponde a una tabella, un'istanza a una riga.
  • La convenzione sulla configurazione gestisce la denominazione.
  • CRUD: create, find/find_by, update, destroy.
  • Il tracciamento delle modifiche mostra le modifiche non salvate.
  • Active Record genera SQL sicuro al posto suo.

Ora imparerà a gestire lo schema del database con le migrazioni.

Domande Frequenti

La lezione «Basi di Active Record» è gratuita?

Sì — il testo completo di «Basi di Active Record» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Ruby Academy, passa a CoddyKit PRO. Il corso Ruby Academy include 4 lezioni in totale.

Cosa imparerò in «Basi di Active Record»?

Fondamenti degli ORM Eserciti Ruby Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Ruby Academy?

Non è richiesta alcuna esperienza precedente. Ruby Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Basi di Active Record»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Ruby Academy?

Sì. Ogni lezione Ruby Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Basi di Active Record
  2. Migrazioni
  3. Associazioni
  4. Validazioni e query
← Torna a Ruby Academy