Skip to content

Commit fb86c67

Browse files
committed
Rewrite N+1 query
1 parent cadeb88 commit fb86c67

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

lib/active_admin/sortable_tree/controller_actions.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,13 @@ def sortable(options = {})
2424
collection_action :sort, :method => :post do
2525
resource_name = ActiveAdmin::SortableTree::Compatibility.normalized_resource_name(active_admin_config.resource_name)
2626

27+
# Query all resources at once to avoid N+1
28+
ids = (params[resource_name].keys + params[resource_name].values).compact.uniq
29+
resources = Hash[resource_class.where(id: ids).map { |r| [r.id.to_i, r] }]
30+
2731
records = []
2832
params[resource_name].each_pair do |resource, parent_resource|
29-
parent_resource = resource_class.find(parent_resource) rescue nil
30-
records << [resource_class.find(resource), parent_resource]
33+
records << [resources[resource.to_i], resources[parent_resource.to_i]]
3134
end
3235

3336
errors = []

0 commit comments

Comments
 (0)