Ruby on rails 如何查询按字段创建的\u的ActiveRecord关系

Ruby on rails 如何查询按字段创建的\u的ActiveRecord关系,ruby-on-rails,activerecord,ruby-on-rails-5,Ruby On Rails,Activerecord,Ruby On Rails 5,因此,我目前正在使用以下命令连接并查询我的表-在我的订单中查找订单项,其中可订购的\u id=适用的\u产品\u项目id总价=0和买家id=当前用户 Order.joins(:items) .where(order_items: {id: OrderItem.where(orderable_id: applicable_product_item_id)}) .where(total_price: 0) .where(buyer_id: current_user)

因此,我目前正在使用以下命令连接并查询我的表-在我的订单中查找订单项,其中可订购的\u id=适用的\u产品\u项目id总价=0和买家id=当前用户

Order.joins(:items)
     .where(order_items: {id: OrderItem.where(orderable_id: applicable_product_item_id)})
     .where(total_price: 0)
     .where(buyer_id: current_user)
这一切都很好,但现在我想进一步查询,我想知道它找到的订单是否在日期创建了一个可搜索的创建日期

我尝试在查询中使用另一个.where,并选择数组中的.first,进一步查询,即query=over\u query.first

然后

但我明白了

Undefined method where for #<Order:0x007fbc8d8edf90>
未定义的方法,其中#

furman87的评论听起来很对:


您必须在where子句中指定表格--.where(“orders.created\u at>?”,可搜索的\u created\u by\u date)

您也可以尝试:

Order.
  where(total_price: 0).
  where(buyer_id: current_user).
  where("created_at > ?", searchable_created_by_date).
  joins(:order_items).
  where(order_items: {id: OrderItem.where(orderable_id: applicable_product_item_id)})
我认为将
created_at
语句放在
joins
语句之前可以消除查询的歧义,但我不能100%确定


另外,我还以为你会做
连接(:order\u items)
。但是,我想这取决于你如何建立你的协会。如果
加入(:items)
对您有效,那么您将获得更多的力量!(并忽略注释。)

当您执行上面的查询时。首先,您不再有可链接的查询。这就是为什么会得到
无方法错误
。所以,这是不可能的。当您尝试链接一个附加的
.where
语句时,您得到了什么?您能显示初始化查询的位置吗?@jvillian当我链接时。我得到的列引用“created_at”是模糊的。您必须在where子句中指定表--
.where(“orders.created_at>”,可搜索的_created_by_date)
Thank guys-orders.created\u删除了歧义
Order.
  where(total_price: 0).
  where(buyer_id: current_user).
  where("created_at > ?", searchable_created_by_date).
  joins(:order_items).
  where(order_items: {id: OrderItem.where(orderable_id: applicable_product_item_id)})