我已经有了一个有效的解决方案,但我真的很想知道为什么这行不通:
ratings = Model.select(:rating).uniq
ratings.each { |r| puts r.rating }
它选择,但不打印唯一值,而是打印所有值,包括重复的值。它在文档中:http://guides.rubyonrails.org/active_record_querying.html#selecting-specific-fields
我已经有了一个有效的解决方案,但我真的很想知道为什么这行不通:
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.distinct(:rating)
您可以使用以下Gem: active_record_distinct_on
Model.distinct_on(:rating)
产生以下查询:
SELECT DISTINCT ON ( "models"."rating" ) "models".* FROM "models"
这也有用。
Model.pluck("DISTINCT rating")
用sql收集uniq列的另一种方法:
Model.group(:rating).pluck(:rating)
Model.select(:rating).uniq
从rails 3.2开始,这段代码就像“DISTINCT”一样工作(而不是Array#uniq)