列中数组的唯一值

时间:2015-12-08 07:14:34

标签: ruby-on-rails arrays ruby

这篇文章很接近:

Rails: select unique values from a column

Model.uniq.pluck(:rating)

效果很好,除了在我的情况下我的列中有一个数组,所以我得到这样的东西:

[["guest"], ["engineer", "manager"], ["engineer"], ["admin"], ["operations"], ["operator"], ["operator", "manager"]]

我希望将这些缩小到最简单的列表(按照字母顺序排列)。

1 个答案:

答案 0 :(得分:3)

您需要的是Array#flattenArray#sort

Model.pluck(:rating).flatten
#=>["guest", "engineer", "manager", "engineer", "admin", "operations", "operator", "operator", "manager"]

现在排序:

Model.pluck(:rating).flatten.uniq
#= ["guest", "engineer", "manager", "admin", "operations", "operator"]

Model.pluck(:rating).flatten.uniq.sort
#=> ["admin", "engineer", "guest", "manager", "operations", "operator"]

如果可能有大写单词,请在排序时将其缩写,以确保排序不区分大小写:

Model.pluck(:rating).flatten.uniq.sort_by(&:downcase)
相关问题