Funciona de dos maneras únicas.
Primero: toma un bloque para que pueda ser utilizado como Array#select.
Model.all.select { |m| m.field == value }
Esto construirá un array de objetos de la base de datos para elámbito, convirtiéndolos en un array e iterando a través de ellos usandoArray#select.
Segundo: Modifica la sentencia SELECT de la consulta para que sólo se recuperen ciertos campos:
Model.select(:field)# =>
Aunque en el ejemplo anterior parece que este método devuelve un array, en realidad devuelve un objeto de relación y se le pueden añadir otros métodos de consulta, como los otros métodos de ActiveRecord::QueryMethods.
El argumento del método también puede ser una matriz de campos.
Model.select(:field, :other_field, :and_one_more)# =>
También puede utilizar una o más cadenas, que se utilizarán sin cambios como campos SELECT.
Model.select('field AS field_one', 'other_field AS field_two')# =>
Si se ha especificado un alias, será accesible desde los objetos resultantes:
Model.select('field AS field_one').first.field_one# => "value"
El acceso a los atributos de un objeto que no tienen campos recuperados por un select exceptid lanzará ActiveModel::MissingAttributeError:
Model.select(:field).first.other_field# => ActiveModel::MissingAttributeError: missing attribute: other_field