我正在开发一个rails 4演示应用程序,我被一个activerecord查询难倒。
有两个主要表:widgets
和orders
。客户可以为order
输入价格可变的widgets
。在网站管理员结束交易并为final_price
设置widget
之前,widgets.final_price
为NULL
并且订单仍处于打开状态。
我想选择已关闭的订单,所以我写了这样的东西:
@closed = Order.joins(:widget).where("orders.buyer_id = :user_id AND widgets.final_price IS NOT NULL", {user_id: current_user})
在我的rails日志中,这样查询DB:
SELECT COUNT(*) FROM "orders" INNER JOIN "widgets" ON "widgets"."id" = "orders"."widget_id" WHERE (orders.buyer_id = 2 AND widgets.final_price IS NOT NULL)
但是,目前widgets
都没有最终价格 - 我在postresql管理员中验证了这一点,查询:
SELECT * FROM "widgets" WHERE widgets.final_price IS NOT NULL // returns 0 results
然而,在上面的activerecord查询中,@closed.count
返回5,@closed.inspect
显示5条记录。当我确认widget.final_price