有条件的ActiveRecord语句的更好方法是什么?

时间:2015-08-04 16:08:31

标签: ruby-on-rails ruby activerecord

我试图想出一个更好的方法来在这里进行一次查询。我希望能够发送一些内容来声明通配符,以便我可以选择所有供应商。现在,如果我不包含该行,它不会被供应商过滤,所以我基本上可以获得所有购买请求。

有什么想法可以更清晰地进行这类查询吗?

ReferenceError: count is not defined

2 个答案:

答案 0 :(得分:3)

必须有一些更好的解决方案,但试试这个

@purchase_requests = PurchaseRequest.includes(:purchase_order).where(created_at: @date_start..@date_end, total_cost: @cost_beginning..@cost_end)
@purchase_requests = @purchase_requests.where("purchaseorder.VendorRef_ListID = ?", @vendor) unless @vendor == "0"

答案 1 :(得分:1)

这是一个简化版本:

@purchase_requests = PurchaseRequest
                     .includes(:purchase_order)
                     .where(created_at: @date_start..@date_end)
                     .where(total_cost: @cost_beginning..@cost_end)
@purchase_requests = @purchase_requests.where('purchase_orders.VendorRef_ListID = ?', @vendor) unless @vendor == '0'