Fonctionne de deux façons uniques.

Premièrement : prend un bloc afin qu’il puisse être utilisé comme Array#select.

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

Ceci va construire un tableau d’objets à partir de la base de données pour le champ d’application, les convertissant en un tableau et les itérant en utilisantArray#select.

Deuxièmement : modifie l’instruction SELECT de la requête pour que seuls certains champs soient récupérés :

Model.select(:field)# => 

Bien que dans l’exemple ci-dessus, il semble que cette méthode renvoie un tableau, elle renvoie en fait un objet relation et peut avoir d’autres méthodes de requête qui lui sont annexées, comme les autres méthodes d’ActiveRecord::QueryMethods.

L’argument de la méthode peut aussi être un tableau de champs.

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

Vous pouvez aussi utiliser une ou plusieurs chaînes de caractères, qui seront utilisées inchangées comme champs SELECT.

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

Si un alias a été spécifié, il sera accessible à partir des objets résultants:

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

L’accès aux attributs d’un objet qui n’ont pas de champs récupérés par un select exceptid lancera ActiveModel::MissingAttributeError:

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

.

admin

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

lg