【发布时间】:2019-02-18 12:19:01
【问题描述】:
我正在使用 Rails 5,PostgreSQL。我需要使用 postgres DATE_TRUNC 来获取按 created_at 天分组的用户数。 条件是在某个日期范围内创建的用户,并且在同一日期范围内有订单。
以下是导致 AmbiguousFunction 错误的代码
Spree::User.joins(:orders)
.where(spree_orders: { completed_at: params[:start_date]..params[:end_date] })
.order("DATE_TRUNC('day', 'created_at')")
.group("DATE_TRUNC('day', 'created_at')")
.count
start_date和end_date的参数如下:
params[:end_date] = Time.current.end_of_day
params[:start_date] = (Time.current - 200.days).beginning_of_day
我收到以下错误
ActiveRecord::StatementInvalid: PG::AmbiguousFunction: ERROR: function date_trunc(unknown, unknown) is not unique
甚至当我明确写 spree_users.created_at 我得到同样的错误。
有没有更好的方法来实现这个错误的要求或解决方案?
【问题讨论】:
-
我不使用 PostgreSQL,但您不应该将
created_at括在引号中和/或列不明确;试试users.created_at(没有单引号)。 -
不是为了回答这个问题,但
order("DATE_TRUNC('day', 'created_at')")应该是多余的,因为分组和计数。 -
@M.Wyatt 试过了,还是一样的问题
标签: ruby-on-rails ruby postgresql activerecord