Rails: comment obtenir des valeurs uniques dans la colonne

Comment puis-je obtenir des valeurs uniques à partir d’une colonne dans le tableau? Par exemple, j’ai cette table Products:

ID NAME CATEGORY 1 name1 1st_cat 2 name2 2nd_cat 3 name3 1st_cat 

Ici, je veux obtenir seulement 2 valeurs – 1st_cat et 2nd_cat:

    

Deux autres façons:

 Products.select(:category).map(&:category).uniq Products.uniq.pluck(:category) 

Je pense que tu peux faire ça:

 < % Products.select("DISTINCT(CATEGORY)").each do |p| %> < %= p.category %> < % end %> 

Source: http://guides.rubyonrails.org/active_record_querying.html#selecting-specific-fields

Cela fait tout le travail dans le serveur de firebase database. Le résultat est un tableau simple.

 < % Product.distinct(:category).pluck(:category).each do |category| <%= category %> < % end %> 

Rails générera du SQL qui fonctionne sur n’importe quelle firebase database (Postgres, MySQL, etc.).

 SELECT DISTINCT "products"."category" FROM "products" 

Essayez ceci (dans la console des rails)

 Product.group(:category) Product.group(:category).each { |p| p.name } 

Je suggère d’utiliser Products.all.distinct.pluck(:category) car uniq est obsolète depuis les rails 5 et il sera supprimé sur les rails 5.1

Nécessaire pour obtenir une sortie unique et essayait la méthode «uniq» sans succès. Essayé plusieurs solutions affichées ici sans succès. J’utilise un outil qui me permet d’accéder à la méthode current_user et de travailler avec deux tables, l’une étant une jointure (un élément has_many: things).

Cette solution a finalement fonctionné pour moi:

 @current_user.things.select(:item_fk).distinct.each do |thing| < %= thing.item.attribute %> < % end %> 

Pour postgres

 < % Product.select("DISTINCT ON (category) *").each do |category| <%= category %> < %= name %> < % end %>