Rails 4:列引用“updated_at”与Postgres不明确

时间:2015-10-02 18:55:23

标签: ruby postgresql datetime ruby-on-rails-4

我正在尝试使用“updated_at”字段的DateTime范围查询数据库。前端以JSON数组发送查询:

["2015-09-01 00:00:00","2015-10-02 23:00:00"]

在Rails控制器上,我使用以下方法将两个字符串解析为DateTime:

start_date = DateTime.parse(params[:date_range_arr][0])
end_date = DateTime.parse(params[:date_range_arr][1])

#...
@events = @events.where('updated_at BETWEEN ? AND ?,
       start_date, end_date
)

查询显示:

WHERE (updated_at BETWEEN '2015-09-01 00:00:00.000000' AND '2015-10-02 23:00:00.000000')

错误是:

ActionView::Template::Error (PG::AmbiguousColumn: ERROR:  column reference "updated_at" is ambiguous
LINE 1: ...texts"."id" = "events"."context_id" WHERE (updated_at...

1 个答案:

答案 0 :(得分:8)

您是否有任何机会在事件模型或原始问题中包含的代码中包含连接或包含的默认范围?

无论哪种方式,您只需要对查询更加具体,如下所示:

#...
@events = @events.where('events.updated_at BETWEEN ? AND ?,
   start_date, end_date
)