Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Opzioni della relazione uno a molti

Modificare alcune caratteristiche della relazione per ottenere interrogazioni personalizzate o più efficaci
Modificare alcune caratteristiche della relazione per ottenere interrogazioni personalizzate o più efficaci
Link copiato negli appunti

Nel definire la relazione uno a molti con has_many e belongs_to, è possibile specificare differenti opzioni che modificano il comportamento della relazione. Vediamo quali sono le opzioni più utilizzate.

Opzioni per has_many

Con l'opzione :order è possibile specificare l'ordine con cui gli oggetti associati sono estratti; ad esempio:

has_many :bookmarks, :order => "title"

ordinerà tutti i bookmark abbinati ad una categoria per titolo.

Con l'opzione :dependent è possibile specificare come trattare gli oggetti associati ad un oggetto che viene cancellato dal database. Specificando:

has_many :bookmarks, :dependent => "destroy"

nel modello Category, quando si cancella una categoria vengono cancellati anche tutti i bookmark collegati, mentre specificando

has_many :bookmarks, :dependent => "nullify"

tutti i bookmark abbinati ad una categoria che viene cancellata avranno la chiave esterna category_id impostata a valore nullo.

Con l'opzione :select è possibile specificare quali campi degli oggetti associati devono essere estratti; ad esempio per estrarre solo il titolo dei bookmark associati ad una categoria possiamo utilizzare:

has_many :bookmarks, :select => "title"

Con l'opzione :conditions è possibile specificare le condizioni che gli oggetti associati devono rispettare per essere presi in considerazione; ad esempio

has_many :bookmarks, :conditions => {:published => true}

Opzioni per belongs_to

Con l'opzione :foreign_key è possibile specificare una chiave esterna da utilizzare per la relazione differente da quella utilizzata per convezione; è possibile indicare uno qualsiasi degli attrivuti disponibili per il modello. Le opzioni :conditions e :select si comportano come specificato per has_many.

Ti consigliamo anche