我已经有了一个有效的解决方案,但我真的很想知道为什么这行不通:

ratings = Model.select(:rating).uniq
ratings.each { |r| puts r.rating }

它选择,但不打印唯一值,而是打印所有值,包括重复的值。它在文档中:http://guides.rubyonrails.org/active_record_querying.html#selecting-specific-fields


当前回答

用sql收集uniq列的另一种方法:

Model.group(:rating).pluck(:rating)

其他回答

Model.pluck("DISTINCT column_name")

这也有用。

Model.pluck("DISTINCT rating")
Model.select(:rating).distinct

用sql收集uniq列的另一种方法:

Model.group(:rating).pluck(:rating)
Model.uniq.pluck(:rating)

# SELECT DISTINCT "models"."rating" FROM "models"

这具有不使用sql字符串和不实例化模型的优点