Arbeitet auf zwei einzigartige Arten.
Erstens: Nimmt einen Block, so dass er genau wie Array#select verwendet werden kann.
Model.all.select { |m| m.field == value }
Dies baut ein Array von Objekten aus der Datenbank für den Bereich auf, konvertiert sie in ein Array und iteriert durch sie mitArray#select.
Zweitens: Ändert die SELECT-Anweisung für die Abfrage so, dass nur bestimmte Felder abgerufen werden:
Model.select(:field)# =>
Obwohl es im obigen Beispiel so aussieht, als ob diese Methode ein Array zurückgibt, gibt sie tatsächlich ein Beziehungsobjekt zurück und kann mit anderen Abfragemethoden verknüpft werden, wie zum Beispiel mit den anderen Methoden in ActiveRecord::QueryMethods.
Das Argument der Methode kann auch ein Array von Feldern sein.
Model.select(:field, :other_field, :and_one_more)# =>
Sie können auch einen oder mehrere Strings verwenden, die dann unverändert als SELECT-Felder verwendet werden.
Model.select('field AS field_one', 'other_field AS field_two')# =>
Wenn ein Alias angegeben wurde, kann auf diesen von den resultierenden Objekten aus zugegriffen werden:
Model.select('field AS field_one').first.field_one# => "value"
Der Zugriff auf Attribute eines Objekts, die keine Felder haben, die durch ein select exceptid abgerufen werden, löst ActiveModel::MissingAttributeError aus:
Model.select(:field).first.other_field# => ActiveModel::MissingAttributeError: missing attribute: other_field