diff --git a/app/models/enterprise_relationship.rb b/app/models/enterprise_relationship.rb index de2ede8440..6acd672f2f 100644 --- a/app/models/enterprise_relationship.rb +++ b/app/models/enterprise_relationship.rb @@ -25,8 +25,8 @@ class EnterpriseRelationship < ActiveRecord::Base where('parent_id IN (?) OR child_id IN (?)', enterprises, enterprises) } - scope :permitting, ->(enterprises) { where('child_id IN (?)', enterprises) } - scope :permitted_by, ->(enterprises) { where('parent_id IN (?)', enterprises) } + scope :permitting, ->(enterprise_ids) { where('child_id IN (?)', enterprise_ids) } + scope :permitted_by, ->(enterprise_ids) { where('parent_id IN (?)', enterprise_ids) } scope :with_permission, ->(permission) { joins(:permissions). diff --git a/app/models/spree/product_decorator.rb b/app/models/spree/product_decorator.rb index 2e701eb920..e0ebf327d3 100644 --- a/app/models/spree/product_decorator.rb +++ b/app/models/spree/product_decorator.rb @@ -118,7 +118,7 @@ Spree::Product.class_eval do scope :stockable_by, lambda { |enterprise| return where('1=0') if enterprise.blank? - permitted_producer_ids = EnterpriseRelationship.joins(:parent).permitting(enterprise) + permitted_producer_ids = EnterpriseRelationship.joins(:parent).permitting(enterprise.id) .with_permission(:add_to_order_cycle).where(enterprises: { is_primary_producer: true }).pluck(:parent_id) return where('spree_products.supplier_id IN (?)', [enterprise.id] | permitted_producer_ids) } diff --git a/app/services/subscription_variants_service.rb b/app/services/subscription_variants_service.rb index 855c200303..fbdef71e56 100644 --- a/app/services/subscription_variants_service.rb +++ b/app/services/subscription_variants_service.rb @@ -24,7 +24,7 @@ class SubscriptionVariantsService def self.permitted_producer_ids(distributor) other_permitted_producer_ids = EnterpriseRelationship.joins(:parent) - .permitting(distributor).with_permission(:add_to_order_cycle) + .permitting(distributor.id).with_permission(:add_to_order_cycle) .merge(Enterprise.is_primary_producer) .pluck(:parent_id) diff --git a/lib/open_food_network/order_cycle_permissions.rb b/lib/open_food_network/order_cycle_permissions.rb index e49ee2f74f..9a3d33e3af 100644 --- a/lib/open_food_network/order_cycle_permissions.rb +++ b/lib/open_food_network/order_cycle_permissions.rb @@ -90,8 +90,8 @@ module OpenFoodNetwork Spree::Variant.joins(:product).where('spree_products.supplier_id = (?)', producer) else # All variants of the producer if it has granted P-OC to any of my managed hubs that are in this order cycle - permitted = EnterpriseRelationship.permitting(managed_participating_hubs). - permitted_by(producer).with_permission(:add_to_order_cycle).present? + permitted = EnterpriseRelationship.permitting(managed_participating_hubs.select(:id)). + permitted_by(producer.id).with_permission(:add_to_order_cycle).present? if permitted Spree::Variant.joins(:product).where('spree_products.supplier_id = (?)', producer) else diff --git a/lib/open_food_network/permissions.rb b/lib/open_food_network/permissions.rb index eec62ed775..b1283c68a6 100644 --- a/lib/open_food_network/permissions.rb +++ b/lib/open_food_network/permissions.rb @@ -43,7 +43,7 @@ module OpenFoodNetwork # Permissions granted by create_variant_overrides relationship from producer to hub permissions = Hash[ EnterpriseRelationship. - permitting(hubs). + permitting(hubs.select(:id)). with_permission(:create_variant_overrides). group_by(&:child_id). map { |child_id, ers| [child_id, ers.map(&:parent_id)] } @@ -183,7 +183,8 @@ module OpenFoodNetwork def related_enterprises_granting(permission, options = {}) parent_ids = EnterpriseRelationship. - permitting(options[:to] || managed_enterprises). + # this options[:to].id needs to be verified/tested + permitting(options[:to].select(:id) || managed_enterprises.select(:id)). with_permission(permission). pluck(:parent_id) @@ -192,7 +193,7 @@ module OpenFoodNetwork def related_enterprises_granted(permission, options = {}) child_ids = EnterpriseRelationship. - permitted_by(options[:by] || managed_enterprises). + permitted_by(options[:by].select(:id) || managed_enterprises.select(:id)). with_permission(permission). pluck(:child_id)