1. Convenzioni
- Tabelle: nome plurale con gli underscore che separano le parole
- Model: sinfolari con la prima lettera di ogni parola in maiuscolo
- Chiavi esterne:
singularized_table_name_id
(esempiitem_id
,order_id
)
Model / Class | Table / Schema |
---|---|
Article | articles |
LineItem | line_items |
Deer | deers |
Mouse | mice |
Person | people |
2. CRUD
2.1 Creazione
Gli oggetti ActiveRecord possono essere creati da un hash (metodo create) oppure posso istanziarli e settare i loro attributi successivamente. Le seguenti istruzioni sono analoghe
2.1.1 New
2.1.2 Create
2.2 Lettura
2.3 Aggiornamento
Una volta che ho trovato un oggetto, posso aggiornarne gli attributi per poi salvarlo su DB.
Un modo veloce per eseguire tale operazione è il seguente (esegue già il save)
Per aggiornare tutti i record è possibile utilizzare la seguente istruzione
2.4 Eliminazione
3 Controlli
Con ActivRecord è possibile eseguire dei controlli sui dati prima che questi vengano scritti sul database (quindi non vengono lanciate con il metodo new
ma con il metodo create
(oppure dopo un quasiasi metodo save
))
1. Errori
Per verificare che un particolare oggetto abbia o meno superato le validazioni posso usare la funzione errors[:attribute]
che fornisce un array per tutti gli errori di tale attributo. Deve essere lanciato dopo che le validazioni sono partite
2.Validazioni
2.1 acceptance
Valida se un checkbox è stato selezionato quando un form è stato submittato. Può essere lanciato anche su un attributo che non esiste direttamente nel DB, in tal caso verrà creato un attributo virtuale. Può essere utilizzato principalmente se l’utente deve accettare i terms of service, confermare la lettura di un qualche testo io simili.
2.2 validates_associated
Da utilizzare quando il model ha delle associazioni con altri model che devono essere validate. Quando viene lanciato il save il metodo valid?
viene chiamato su tutti gli oggetti associati.
2.3 confirmation
Da usare quando ho due campi di testo e voglio che entrambi contengano lo stesso valore. Questa validazione crea un attributo virtuale il cui nome è il nome del campo che deve essere conrfermato con un _confirmation alla fine. Per esempio, se voglio confermare la mail, opero di conseguenza:
2.4 Exclusion
Controlla che l’attributo non sia contenuto in un determinato insieme
2.5 format
Controlla che l’attributo faccia il match con una espressione regolare
Se sostituisco il :with
con il :without
chiedo che non esegua il match con la regexp.
2.6 inclusion
Controlla che gli attributi siano inclusi in un determinato insieme
2.7 length
2.8 numericality
Controlla che l’attributo in questione abbia solo numeri (integer o float). Se voglio solo interi devo aggiungere l’opzione :only_integer
a true.
2.9 presence
Controlla che gli attributi indicati non siano vuoti.
Nel caso in cui voglia verificare la presenza di una associazione devo eseguire il seguente codice:
Nel caso in cui voglia validare la presenza di un campo booleano devo eseguire il seguente trucco (in quando false.blank?
fornisce true
)
2.10 abscence
Verifica che gli attributi indicati siano vuoti
2.11 uniqueness
Controlla che l’attributo indicato sia l’unico presente su database. Deve essere associato ad un vincolo di unicità anche su DB.
3 Validazioni condizionali
Talvolta conviene validare un attributo solo se una determinata condizione è soddisfatta.
Posso anche usare una stringa a cui sarà fatto l’eval
.
3.1 Raggruppare istruzioni condizionali
4. Visualizzare gli errori nelle view
Non esistono degli helper prefatti, tendenzialmente si può eseguire una strittura del genere
4. Callback
Posso associare del codice che deve essere lanciato ad un determinato momento nella vita di un oggetto.
4.1 Implementazione
Posso definire la callback con due modalità, o come metodo o come blocco.
Metodo
Blocco
Di seguite sono elencate tutte le possibili callback disponbili:
Creazione
before_validation
after_validation
before_save
around_save
before_create
around_create
after_create
after_save
after_commit/after_rollback
Aggiornamento
before_validation
after_validation
before_save
around_save
before_update
around_update
after_update
after_save
after_commit/after_rollback
Eliminazione
before_destroy
around_destroy
after_destroy
after_commit/after_rollback
5. Migrazioni
Le migrazioni sono utilizzate per gestire lo schema effettivo del DB e i suoi cambiamenti. Le migrazioni sono memorizzate in file e eseguite mediante il comando rake
.