我使用包含重复预设值的属性( category )创建了一个Ruby数组( Articles )(例如,以下之一:“Drink”,“主要“,”侧“)。 因此,我想获得此类别属性的所有唯一值的列表。
我想过像
这样的东西Article.all.category.uniq
......但那没用。这是一个示例数组:
[#<Article id: 1, category: "Drink">, #<Article id: 2, category: "Main">, #<Article id: 3, category: "Drink">, #<Article id: 4, category: "Side">, #<Article id: 5, category: "Drink">, ]
我正在寻找的结果列表的内容应该是这样的:“Drink”,“Main”,“Side”
答案 0 :(得分:17)
Article.all.map {|a| a.category}.uniq
应该做的。
答案 1 :(得分:7)
我会这样做:
Article.select("distinct category").map {|a| a.category}
而不是lucapette's answer,因为这种操作在ruby中比在数据库中慢得多。
我的代码示例假设您正在使用某种SQL数据库。它与其他类型的数据库看起来不同。
答案 2 :(得分:4)
在Rails 3.2中
Article.uniq.pluck(:category)