查询唯一属性列表

时间:2011-09-19 22:00:15

标签: ruby-on-rails ruby arrays

我使用包含重复预设值的属性( 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”

3 个答案:

答案 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)