Works in two unique ways.

First: pega um bloco para que ele possa ser usado exatamente como Array#select.

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

Isto irá construir um array de objetos do banco de dados para o escopo, convertendo-os em um array e iterando através deles usandoArray#select.

Segundo: Modifica a instrução SELECT para a consulta para que apenas certos campos sejam recuperados:

Model.select(:field)# => 

Embora no exemplo acima pareça que este método retorna anarray, ele realmente retorna um objeto de relação e pode ter outros querymethods anexados a ele, como os outros métodos no ActiveRecord::QueryMethods.

O argumento para o método também pode ser um array de campos.

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

Você também pode usar uma ou mais strings, que serão usadas inalteradas como campos SELECT.

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

Se um alias foi especificado, ele será acessível a partir dos objetos resultantes:

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

Acessar atributos de um objeto que não tem campos recuperados por um seleto exceptid irá lançar ActiveModel::MissingAttributeError:

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

admin

Deixe uma resposta

O seu endereço de email não será publicado.

lg