Ruby on rails 如何查询按字段创建的\u的ActiveRecord关系
因此,我目前正在使用以下命令连接并查询我的表-在我的订单中查找订单项,其中可订购的\u id=适用的\u产品\u项目id总价=0和买家id=当前用户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)
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)})