Funguje dvěma unikátními způsoby.

První: přebírá blok, takže jej lze použít stejně jako Array#select.

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

Sestaví pole objektů z databáze pro obor, převede je do pole a iteruje je pomocíArray#select.

Druhý: Upraví příkaz SELECT pro dotaz tak, aby byla získána pouze určitá pole:

Model.select(:field)# => 

Ačkoli ve výše uvedeném příkladu to vypadá, že tato metoda vrací pole, ve skutečnosti vrací objekt relace a mohou k ní být připojeny další metody dotazu, například ostatní metody v ActiveRecord::QueryMethods.

Argumentem metody může být také pole polí.

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

Můžete také použít jeden nebo více řetězců, které budou použity beze změny jako pole SELECT.

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

Pokud byl zadán alias, bude přístupný z výslednýchobjektů:

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

Přístup k atributům objektu, které nemají pole získaná pomocí select exceptid, vyvolá chybu ActiveModel::MissingAttributeError:

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

.

admin

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.

lg