Rails:我怎样才能从列中获得唯一的值
我怎样才能从表中的列中获得唯一的值? 例如,我有这个产品表:
ID NAME CATEGORY 1 name1 1st_cat 2 name2 2nd_cat 3 name3 1st_cat 在这里,我只想得到2个值 – 1st_cat和2nd_cat:
 <%Products.each do |p|%> <%=p.category%> <%end%> 
	
还有两种方法:
 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将生成适用于任何数据库(Postgres,MySQL等)的SQL。
 SELECT DISTINCT "products"."category" FROM "products" 
试试这个(在rails控制台中)
 Product.group(:category) Product.group(:category).each { |p| p.name } 
 我build议使用Products.all.distinct.pluck(:category)因为uniq已经被弃用,因为rails 5和它将在rails 5.1上被删除 
 需要得到独特的输出,并试图“uniq”方法失败。 试了几个解决scheme张贴在这里失败。 我使用的devise,使我可以访问current_user方法和使用两个表,一个是联接(一个项目has_many:东西)。 
这个解决scheme最终为我工作:
 @current_user.things.select(:item_fk).distinct.each do |thing| <%= thing.item.attribute %> <% end %>