Rails: как я могу получить уникальные значения из столбца

Как получить уникальные значения из столбца в таблице? Например, у меня есть эта таблица продуктов:

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

Здесь я хочу получить только 2 значения – 1st_cat и 2nd_cat:

    

Еще два способа:

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

Я думаю, вы можете это сделать:

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

Источник: http://guides.rubyonrails.org/active_record_querying.html#selecting-specific-fields

Это делает всю работу на сервере базы данных. В результате получается простой массив.

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

Rails будет генерировать SQL, который работает в любой базе данных (Postgres, MySQL и т. Д.).

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

Попробуйте это (в консоли рельсов)

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

Я предлагаю использовать Products.all.distinct.pluck(:category) потому что uniq устарел с рельсов 5, и он будет удален на рельсах 5.1

Нужно было получить уникальный результат и безуспешно пытался использовать метод «uniq». Пробовал несколько решений, отправленных здесь неудачно. Я использую devise, который дает мне доступ к методу current_user и работает с двумя таблицами, один из которых является соединением (элемент has_many: things).

Это решение в конечном итоге сработало для меня:

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

Для postgres

 <% Product.select("DISTINCT ON (category) *").each do |category| <%= category %> <%= name %> <% end %> 
Давайте будем гением компьютера.