-
-
Notifications
You must be signed in to change notification settings - Fork 827
Open
Description
Hello,
When I use shared context (https://activerecord-hackery.github.io/ransack/going-further/merging-searches/)
And have join, I got such an error:
NoMethodError:
undefined method 'join_root' for an instance of Symbol
# /usr/local/bundle/gems/ransack-4.4.1/lib/ransack/adapters/active_record/context.rb:115:in 'Ransack::Adapters::ActiveRecord::Context#join_sources'
How to reproduce:
# Task model or ApplicationRecord
def ransack_test
shared_context = Ransack::Context.for(Task)
search_parents = Task.ransack(
{ name_eq: "A" }, context: shared_context
)
search_children = Task.ransack(
{ name_eq: "B" }, context: shared_context
)
shared_conditions = [search_parents, search_children].map do |search|
Ransack::Visitor.new.accept(search.base)
end
Task.joins(shared_context.join_sources)
.where(shared_conditions.reduce(&:or))
endTask.ransack_test
Task Load (0.2ms) SELECT "tasks".* FROM "tasks" WHERE ("tasks"."name" = 'A' OR "tasks"."name" = 'B')
[]Task.joins(:asset).ransack_test
app/models/application_record.rb:33:in 'ApplicationRecord.ransack_test': undefined method 'join_root' for an instance of Symbol (NoMethodError)
if join_root.match?(oj.join_root) && join_root.table.name == oj.join_root.table.name
^^^^^^^^^^
Metadata
Metadata
Assignees
Labels
No labels