Werkt op twee unieke manieren.

Eerst: neemt een blok zodat het net als Array#select gebruikt kan worden.

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

Hiermee wordt een array van objecten uit de database voor de scope opgebouwd, deze worden in een array omgezet en er wordt doorheen geyerteerd metArray#select.

Tweede: wijzigt het SELECT statement voor de query, zodat alleen bepaalde velden worden opgehaald:

Model.select(:field)# => 

Hoewel het in bovenstaand voorbeeld lijkt alsof deze methode een array retourneert, retourneert deze in werkelijkheid een relatie-object en kunnen er andere querymethoden aan worden toegevoegd, zoals de andere methoden in ActiveRecord::QueryMethods.

Het argument voor de methode kan ook een array van velden zijn.

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

U kunt ook een of meer strings gebruiken, die ongewijzigd als SELECT-velden zullen worden gebruikt.

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

Als een alias is opgegeven, is deze toegankelijk via de resulterende objecten:

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

Toegang verkrijgen tot attributen van een object waarvan geen velden zijn opgehaald door een select exceptid zal ActiveModel::MissingAttributeError opleveren:

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

admin

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.

lg