diff --git a/lib/ransack/adapters/active_record/context.rb b/lib/ransack/adapters/active_record/context.rb index a01d284..7ac4e93 100644 --- a/lib/ransack/adapters/active_record/context.rb +++ b/lib/ransack/adapters/active_record/context.rb @@ -186,6 +186,8 @@ module Ransack correlated_key = correlated_key.left.left elsif correlated_key.is_a? Arel::Nodes::Equality correlated_key = correlated_key.left + elsif correlated_key.is_a? Arel::Nodes::Grouping + correlated_key = join_root.right.expr.right.left else correlated_key end diff --git a/spec/ransack/search_spec.rb b/spec/ransack/search_spec.rb index b4d0b3b..c19a6f1 100644 --- a/spec/ransack/search_spec.rb +++ b/spec/ransack/search_spec.rb @@ -238,9 +238,9 @@ module Ransack real_query = remove_quotes_and_backticks(s.to_sql) expect(real_query) - .to include "LEFT OUTER JOIN articles ON articles.person_id = people.id" + .to match(%r{LEFT OUTER JOIN articles ON (\('default_scope' = 'default_scope'\) AND )?articles.person_id = people.id}) expect(real_query) - .to include "LEFT OUTER JOIN articles articles_people ON articles_people.person_id = parents_people.id" + .to match(%r{LEFT OUTER JOIN articles articles_people ON (\('default_scope' = 'default_scope'\) AND )?articles_people.person_id = parents_people.id}) expect(real_query) .to include "people.name = 'person_name_query'" expect(real_query)