diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2f5b56f7..18ebbee7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,11 +41,15 @@ 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.beta2" allow-failure: [false] 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..d6893b68 100644 --- a/lib/pg_search/scope_options.rb +++ b/lib/pg_search/scope_options.rb @@ -90,10 +90,17 @@ 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 } + + # https://github.com/rails/rails/pull/51492 + if ActiveRecord.version >= Gem::Version.new("7.2.0.beta1") + Arel::Nodes::Or.new(expressions) + else + expressions.inject { |accumulator, expression| Arel::Nodes::Or.new(accumulator, expression) } + end end def order_within_rank