diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2f5b56f7..d1405f0e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,11 +41,18 @@ jobs: - ACTIVE_RECORD_VERSION="~> 6.1.0" - ACTIVE_RECORD_VERSION="~> 7.0.0" - ACTIVE_RECORD_VERSION="~> 7.1.0" + - ACTIVE_RECORD_VERSION="~> 7.2.0" allow-failure: [false] + exclude: + - ruby-version: '3.0' + active-record-version-env: ACTIVE_RECORD_VERSION="~> 7.2.0" include: - ruby-version: '3.3' active-record-version-env: ACTIVE_RECORD_BRANCH="main" allow-failure: true + - ruby-version: '3.3' + active-record-version-env: ACTIVE_RECORD_BRANCH="7-2-stable" + allow-failure: true - ruby-version: '3.3' active-record-version-env: ACTIVE_RECORD_BRANCH="7-1-stable" allow-failure: true diff --git a/lib/pg_search/scope_options.rb b/lib/pg_search/scope_options.rb index b03d13d0..6fe515dd 100644 --- a/lib/pg_search/scope_options.rb +++ b/lib/pg_search/scope_options.rb @@ -90,11 +90,32 @@ def subquery end def conditions - config.features - .reject { |_feature_name, feature_options| feature_options && feature_options[:sort_only] } - .map { |feature_name, _feature_options| feature_for(feature_name).conditions } - .inject { |accumulator, expression| Arel::Nodes::Or.new(accumulator, expression) } + expressions = + config.features + .reject { |_feature_name, feature_options| feature_options && feature_options[:sort_only] } + .map { |feature_name, _feature_options| feature_for(feature_name).conditions } + + or_node(expressions) + end + + # https://github.com/rails/rails/pull/51492 + # :nocov: + # standard:disable Lint/DuplicateMethods + or_arity = Arel::Nodes::Or.instance_method(:initialize).arity + case or_arity + when 1 + def or_node(expressions) + Arel::Nodes::Or.new(expressions) + end + when 2 + def or_node(expressions) + expressions.inject { |accumulator, expression| Arel::Nodes::Or.new(accumulator, expression) } + end + else + raise "Unsupported arity #{or_arity} for Arel::Nodes::Or#initialize" end + # :nocov: + # standard:enable Lint/DuplicateMethods def order_within_rank config.order_within_rank || "#{primary_key} ASC"