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

admin

Lämna ett svar

Din e-postadress kommer inte publiceras.

lg