Costruire dinamicamente il nome di un attributo ActiveRecord

I metodi che ActiveRecord associa al modello del database vengono creati in base al nome del campo nella tabella, ActiveRecord automaticamente crea un metodo di lettura della grandezza (coincide col nome del campo) e uno di scrittura (coincide col nome del campo seguito da un =), può succedere a volte di non sapere quale metodo si andrà a interrogare, grazie a send possiamo creare dinamicamente questi nomi di metodi, per esempio, potrei avere una tabella constructs con due campi cover1 e cover2 (questo opzionale), potrei a questo punto ciclare sul numero di cover e riempire in automatico i campi:

covers_array.each do |cover_sel|
created.send(("cover#{number_of_covers.to_s}=").to_sym, cover_sel)
number_of_covers += 1
end

Notare il segno di = alla fine del send e il valore da associarvi passato come secondo argomento di send.

Annunci

Rispondi

Effettua il login con uno di questi metodi per inviare il tuo commento:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: