Działa na dwa unikalne sposoby.

Pierwszy: przyjmuje blok, więc może być użyty tak jak Array#select.

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

To zbuduje tablicę obiektów z bazy danych dla zakresu, konwertując je na tablicę i iterując przez nie przy użyciuArray#select.

Po drugie: Modyfikuje instrukcję SELECT dla zapytania tak, że tylko niektóre pola są pobierane:

Model.select(:field)# => 

Pomimo, że w powyższym przykładzie wygląda to tak, jakby ta metoda zwracała tablicę, w rzeczywistości zwraca ona obiekt relacji i może mieć dołączone inne metody zapytania, takie jak inne metody w ActiveRecord::QueryMethods.

Przedmiotem metody może być również tablica pól.

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

Możesz również użyć jednego lub więcej łańcuchów, które będą używane bez zmian jako pola SELECT.

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

Jeśli został określony alias, będzie on dostępny w obiektach wynikowych:

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

Dostęp do atrybutów obiektu, które nie mają pól pobranych przez select exceptid spowoduje wyrzucenie błędu ActiveModel::MissingAttributeError:

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

.

admin

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

lg