Les documents: http://guides.rubyonrails.org/active_record_querying.html#selecting-specific-fields
Indiquez clairement que:
query = Client.select(:name).distinct
# => Returns unique names
Cependant, lorsque j'essaye cela dans mon contrôleur, j'obtiens l'erreur suivante:
undefined method `distinct' for #<ActiveRecord::Relation:0xb2f6f2cc>
Pour être clair, je veux les noms distincts, comme ['George', 'Brandon'], pas les enregistrements réels des clients. Y a-t-il quelque chose qui me manque?
L'option .distinct
a été ajoutée pour Rails 4, ce à quoi les derniers guides font référence. Si vous êtes toujours sur Rails 3, vous devrez utiliser:
Client.select(:name).uniq
Si vous regardez la section équivalente du guide Rails 3 , vous pouvez voir la différence entre les deux versions.
Cela fonctionnera pour les rails 3 et 4.
Client.select('distinct(name)')
Cela utilisera réellement l'instruction SQL select distinct
SELECT distinct name FROM clients
Si vous ne voulez pas que ActiveRecord :: Relations soit renvoyé, utilisez uniquement un tableau de noms sous forme de chaînes, puis utilisez:
Client.distinct.pluck(:name)
Pour obtenir un ensemble de résultats ordonné:
Client.order(:name).distinct.pluck(:name)