Funcționează în două moduri unice.

Primul: ia un bloc astfel încât să poată fi folosit la fel ca Array#select.

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

Aceasta va construi o matrice de obiecte din baza de date pentru domeniul de aplicare, transformându-le într-o matrice și iterând prin ele folosindArray#select.

Secunda: Modifică instrucțiunea SELECT pentru interogare astfel încât să fie recuperate doar anumite câmpuri:

Model.select(:field)# => 

Deși în exemplul de mai sus pare că această metodă returnează un tablou, ea returnează de fapt un obiect de relație și poate avea atașate alte metode de interogare, cum ar fi celelalte metode din ActiveRecord::QueryMethods.

Argumentul metodei poate fi, de asemenea, un tablou de câmpuri.

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

De asemenea, puteți utiliza unul sau mai multe șiruri de caractere, care vor fi utilizate neschimbate ca și câmpuri SELECT.

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

Dacă a fost specificat un alias, acesta va fi accesibil din obiectele rezultate:

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

Accesul la atributele unui obiect care nu au câmpuri recuperate de un select exceptid va arunca ActiveModel::MissingAttributeError:

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

.

admin

Lasă un răspuns

Adresa ta de email nu va fi publicată.

lg