From 2da6c96666133c3db5969969b413254f30f56a42 Mon Sep 17 00:00:00 2001 From: Camille Schneider Date: Thu, 31 Jul 2025 13:50:08 +0000 Subject: [PATCH] Fix SAR for rails v7.2 --- .github/workflows/rspec.yml | 2 +- .../active_record_monkeypatch.rb | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/.github/workflows/rspec.yml b/.github/workflows/rspec.yml index a03a9c3..8a07af6 100644 --- a/.github/workflows/rspec.yml +++ b/.github/workflows/rspec.yml @@ -4,7 +4,7 @@ jobs: run-rspec-tests: strategy: matrix: - version: ['7.0', '6.0'] + version: ['7.2', '7.0', '6.0'] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 diff --git a/lib/safe_active_record/active_record_monkeypatch.rb b/lib/safe_active_record/active_record_monkeypatch.rb index 01f2417..a642df8 100644 --- a/lib/safe_active_record/active_record_monkeypatch.rb +++ b/lib/safe_active_record/active_record_monkeypatch.rb @@ -150,10 +150,16 @@ class << self alias safe_ar_original_sql sql # sql takes in arguments of TrustedSymbol or UncheckedString type. - def sql(raw_sql) - raw_sql = SafeActiveRecord.check_arg(raw_sql, 0) - - safe_ar_original_sql(raw_sql) + def sql(sql_string, *positional_binds, retryable: false, **named_binds) + raw_sql = SafeActiveRecord.check_arg(sql_string, 0) + + if defined?(ActiveRecord::VERSION) && + Gem::Version.new(ActiveRecord::VERSION::STRING) >= Gem::Version.new('7.2.0') + # If the version is >= 7.2.0, pass the `retryable` parameter. + safe_ar_original_sql(raw_sql, *positional_binds, retryable: retryable, **named_binds) + else + safe_ar_original_sql(raw_sql, *positional_binds, **named_binds) + end end end end