如何查询created_by字段

时间:2017-10-10 18:05:18

标签: ruby-on-rails activerecord ruby-on-rails-5

所以我现在正在使用以下命令加入并查询我的表格 - 在我的订单中寻找 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>

1 个答案:

答案 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)适合您,那么您的权力就更大了! (并忽略评论。)