Rails多条件查询

时间:2014-08-21 18:08:25

标签: sql ruby-on-rails activerecord join

我有一个属于订单的LineItem类。订单包含许多订单项。订单有两个属性,service_category和state。我需要获得具有以下条件的所有订单。目前我正在使用以下2个查询,但我真的想使用1个查询,这可能吗?

LineItem.includes(:order).where(
   menu_item_id:menu_item_id,
   orders:{
     service_category: "delivery",
     state:["pending", "open"]
    }
  )  

LineItem.includes(:order).where(
   menu_item_id:menu_item_id,
   orders:{
     service_category: "walkup",
     state:["pending", "closed"]
    }
  ) 

1 个答案:

答案 0 :(得分:0)

我不确定确切的语法,因为我没有设置模型,但是你不应该包含由OR(||)分隔的两个状态吗?你尝试过这样的事吗?

LineItem.includes(:order).where(
   menu_item_id:menu_item_id,
   orders:{
     (service_category: "delivery",
     state:["pending", "open"])
     ||
     (service_category: "walkup",
     state:["pending", "closed"])
    }
  )