微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – Rails ActiveRecord Model.uniq.pluck:id不适用于postgres

我有一个空的demo rails 4 app尝试执行以下操作:Collection.order(‘created_at ASC’).uniq.pluck:name它在sqlite下工作,但在postgres中爆炸,出现以下错误

(0.9ms)  SELECT disTINCT "collections"."name" FROM "collections" ORDER BY created_at ASC
PG::Error: ERROR:  for SELECT disTINCT,ORDER BY expressions must appear in select list
LINE 1: ...collections"."name" FROM "collections"   ORDER BY created_at...

这是一个错误或我该如何解决

解决方法

这似乎是Postgresql一个问题. ( Rails 3 DISTINCT QUERY)

解决它,您可以使用select代替:

Collection.select([:name,:created_at]).order(‘created_at ASC’).uniq.select(:name)

或者你可以让Ruby获得唯一的名称而不是sql

Collection.order(‘created_at ASC’).pluck(:name).uniq

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐