所以我现在正在使用以下命令加入并查询我的表格 - 在我的订单中寻找 OrderItem ,其中 orderable_id = applicable_product_item_id total_price = 0且 buyer_id = current_user
Order.joins(:items)
.where(order_items: {id: OrderItem.where(orderable_id: applicable_product_item_id)})
.where(total_price: 0)
.where(buyer_id: current_user)
这一切都运行正常,但现在我想进一步查询,我想知道它找到的订单是否有 created_at 日期>的 searchable_created_by_date
我已经尝试在查询中使用另一个.where并选择数组中的.first并进一步查询即query = above_query.first
然后
query.where("created_at > ?", searchable_created_by_date)
但是我得到了
Undefined method where for #<Order:0x007fbc8d8edf90>
答案 0 :(得分:1)
furman87的评论听起来对我说:
您必须在where子句中指定表格 - .where(&#34; orders.created_at&gt;?&#34;,searchable_created_by_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%肯定。
另外,我原以为你会做joins(:order_items)
。但是,我认为这取决于你如何设置你的关联。如果joins(:items)
适合您,那么您的权力就更大了! (并忽略评论。)