【发布时间】:2016-11-13 06:51:48
【问题描述】:
我正在使用这个查询:
Post.where("created_at >= ? AND created_at <= ?", 1.month.ago.beginning_of_month , 1.month.ago.end_of_month)
.select('DISTINCT user_id')
返回 40 个元素。但是,我希望从这个查询中得到一个数组,并且能够用.each 遍历这个数组。问题是当我尝试在查询结果上使用.each 时,我得到了这个:
ActiveRecord::StatementInvalid: PG::InvalidColumnReference: ERROR: for SELECT DISTINCT, ORDER BY 表达式必须出现在选择列表中 第 1 行:...ted_at = '2016-05-31 22:00:00.000000' AND created_at
似乎此查询在created_at 上强制使用ORDER BY,并使其中断,因为查询中没有 order_by。
为了避免这个问题,我正在使用:
Post.where("created_at >= ? AND created_at <= ?", 1.month.ago.beginning_of_month , 1.month.ago.end_of_month)
.map{|p| p.user_id}.uniq
效率较低。
知道为什么我会收到此错误吗?
【问题讨论】:
标签: sql ruby-on-rails postgresql activerecord rails-activerecord