这篇文章很接近:
Rails: select unique values from a column
Model.uniq.pluck(:rating)
效果很好,除了在我的情况下我的列中有一个数组,所以我得到这样的东西:
[["guest"], ["engineer", "manager"], ["engineer"], ["admin"], ["operations"], ["operator"], ["operator", "manager"]]
我希望将这些缩小到最简单的列表(按照字母顺序排列)。
答案 0 :(得分:3)
您需要的是Array#flatten
和Array#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)