Ruby-on-Rails:从模型中选择不同的值
文档: http : //guides.rubyonrails.org/active_record_querying.html#selecting-specific-fields
清楚地说明:
query = Client.select(:name).distinct # => Returns unique names
但是,当我在我的控制器中尝试时,我收到以下错误:
undefined method `distinct' for #
要清楚,我想要不同的名称,如[‘George’,’Brandon’],而不是客户的实际记录。 有什么东西我不见了吗?
为rails 4添加了.distinct
选项,这是最新指南所指的内容。 如果您仍在轨道3上,则需要使用:
Client.select(:name).uniq
如果您查看rails 3指南的等效部分,您可以看到两个版本之间的差异。
这适用于Rails 3和4。
Client.select('distinct(name)')
这实际上将使用SQL select distinct语句
SELECT distinct name FROM clients
如果您不希望返回ActiveRecord :: Relations,只需将名称数组作为字符串,则使用:
Client.distinct.pluck(:name)
要获得有序的结果集:
Client.order(:name).distinct.pluck(:name)