Funziona in due modi unici.

Primo: prende un blocco in modo da poter essere usato proprio come Array#select.

Model.all.select { |m| m.field == value }

Costruisce un array di oggetti dal database per l’ambito, convertendoli in un array e iterando attraverso di essi usandoArray#select.

Secondo: modifica l’istruzione SELECT per la query in modo da recuperare solo certi campi:

Model.select(:field)# => 

Anche se nell’esempio precedente sembra che questo metodo restituisca un array, in realtà restituisce un oggetto relazione e può avere altri metodi di query aggiunti ad esso, come gli altri metodi in ActiveRecord::QueryMethods.

L’argomento del metodo può anche essere un array di campi.

Model.select(:field, :other_field, :and_one_more)# => 

Potete anche usare una o più stringhe, che saranno usate invariate come campi SELECT.

Model.select('field AS field_one', 'other_field AS field_two')# => 

Se è stato specificato un alias, esso sarà accessibile dagli oggetti risultanti:

Model.select('field AS field_one').first.field_one# => "value"

L’accesso agli attributi di un oggetto che non hanno campi recuperati da una select exceptid lancia ActiveModel::MissingAttributeError:

Model.select(:field).first.other_field# => ActiveModel::MissingAttributeError: missing attribute: other_field

admin

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

lg