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