Fungerar på två unika sätt.
För det första: tar ett block så att det kan användas precis som Array#select.
Model.all.select { |m| m.field == value }
Detta kommer att bygga upp en matris av objekt från databasen för området, konvertera dem till en matris och iterera genom dem med hjälp avArray#select.
Sekund: Ändrar SELECT-anvisningen för frågan så att endast vissafält hämtas:
Model.select(:field)# =>
Och även om det i exemplet ovan ser ut som om den här metoden returnerar en array, returnerar den i själva verket ett relationsobjekt och kan ha andra frågemetoder som tillägg, t.ex. de andra metoderna i ActiveRecord::QueryMethods.
Argumentet till metoden kan också vara en array av fält.
Model.select(:field, :other_field, :and_one_more)# =>
Du kan också använda en eller flera strängar, som kommer att användas oförändrade som SELECT-fält.
Model.select('field AS field_one', 'other_field AS field_two')# =>
Om ett alias har angetts kommer det att vara tillgängligt från de resulterandeobjekten:
Model.select('field AS field_one').first.field_one# => "value"
Accessing attributes of an object that do not have fields retrieved by a select exceptid will throw ActiveModel::MissingAttributeError:
Model.select(:field).first.other_field# => ActiveModel::MissingAttributeError: missing attribute: other_field