diff --git a/lib/open_food_network/products_and_inventory_report_base.rb b/lib/open_food_network/products_and_inventory_report_base.rb index 04a587d215..55d50b80bf 100644 --- a/lib/open_food_network/products_and_inventory_report_base.rb +++ b/lib/open_food_network/products_and_inventory_report_base.rb @@ -65,7 +65,15 @@ module OpenFoodNetwork def filter_to_order_cycle(variants) if params[:order_cycle_id].to_i > 0 order_cycle = OrderCycle.find params[:order_cycle_id] - variants.where(id: order_cycle.variants) + # There are two quirks here: + # + # 1. Rails 3 uses only the last `where` clause of a column. So we can't + # use `variants.where(id: order_cycle.variants)` until we upgrade to + # Rails 4. + # + # 2. `order_cycle.variants` returns an array. So we need to use map + # instead of pluck. + variants.where("spree_variants.id in (?)", order_cycle.variants.map(&:id)) else variants end diff --git a/spec/lib/open_food_network/products_and_inventory_report_spec.rb b/spec/lib/open_food_network/products_and_inventory_report_spec.rb index 6e948d12c4..8575d57bb6 100644 --- a/spec/lib/open_food_network/products_and_inventory_report_spec.rb +++ b/spec/lib/open_food_network/products_and_inventory_report_spec.rb @@ -171,7 +171,6 @@ module OpenFoodNetwork end it "should do all the filters at once" do - pending "the order cycle filter is overriden by the distributor filter" # The following data ensures that this spec fails if any of the # filters fail. It's testing the filters are not impacting each other. distributor = create(:distributor_enterprise)