我正在尝试合并两个常见的活动记录查询。
因为我要加入它们,所以我需要指定列的表,这两个表都有一个列,created_at。
我基本上需要把这两个答案结合起来:
ActiveRecord联接抛出列中的where子句是不明确的错误- Rails 5.1
@projects = @projects.joins(:categories).where(categories: { id: params[:category_id] }) if params[:category_id].present?MyModel.where("created_at < ?", 2.days.ago)我现在要说的是:
Train.joins(:schedule).where('created_at >= ?', DateTime.now - 7.days)返回:
Mysql2::Error: Column 'created_at' in where clause is ambiguous: SELECT 发布于 2019-11-14 03:18:46
它是模棱两可的,因为两个表都有created_at,并且不知道应该查看哪个表。
为了在具有相同列名的联接表上指定一个条件,您可以执行如下操作.
Train.joins(:schedule).where(trains: { created_at: DateTime.now - 7.days })或者..。
time_range = DateTime.now - 7.days
Train.joins(:schedule).where('trains.created_at' => time_range)您还可以使用作用域以更干净的方式完成相同的任务。在加入之前,最好在Train上实现WHERE子句。
https://stackoverflow.com/questions/58848665
复制相似问题