Conheça o pluck do ActiveRecord

Criado em: 13/08/2012

No rails, quando precisamos selecionar apenas o valor de uma coluna especifica de uma coleção de um objeto ActiveRecord podemos fazer algo como:

Post.map(&:name)

e obtemos a resposta algo como:

[
    [0] "Foo",
    [1] "Bar",
]

no entanto a partir do rails 3.2 podemos usar o método pluck do ActiveRecord. Ficando o nosso exemplo anterior com o pluck assim:

Post.pluck(:name)

Aparentemente não tem diferenças, afinal ambos ocupam apenas uma linha. No entanto ao utilizarmos o primeiro método estamos instanciando N objetos ActiveRecord e com o map obtendo o valor de cada um deles e retornando um array. Já no exemplo que usa o pluck não precisamos instanciar N objetos ActiveRecord, obtemos o array diretamente.

Por isso prefira sempre usar o pluck, afinal é nativo do ActiveRecord e ainda tem uma performance melhor do que a solução com o map.

RSpec: Crie especificações executáveis em Ruby
Aprimore as suas habilidades enquanto escreve testes com o meu livro RSpec: Crie especificações executáveis em Ruby

Comentários

Comentários powered by Disqus