Skip to content

Commit 4cc3f30

Browse files
committed
Fix export action didn't use export section for eager loading
Fixes #1954
1 parent e8cb8ed commit 4cc3f30

2 files changed

Lines changed: 24 additions & 1 deletion

File tree

app/controllers/rails_admin/main_controller.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,8 @@ def check_for_cancel
123123
end
124124

125125
def get_collection(model_config, scope, pagination)
126-
eager_loads = model_config.list.fields.flat_map(&:eager_load_values)
126+
section = @action.key == :export ? model_config.export : model_config.list
127+
eager_loads = section.fields.flat_map(&:eager_load_values)
127128
options = {}
128129
options = options.merge(page: (params[Kaminari.config.param_name] || 1).to_i, per: (params[:per] || model_config.list.items_per_page)) if pagination
129130
options = options.merge(include: eager_loads) unless eager_loads.blank?

spec/controllers/rails_admin/main_controller_spec.rb

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ def get(action, params)
1010
super action, params: params
1111
end
1212

13+
before do
14+
controller.instance_variable_set :@action, RailsAdmin::Config::Actions.find(:index)
15+
end
16+
1317
describe '#check_for_cancel' do
1418
before do
1519
allow(controller).to receive(:back_or_index) { raise StandardError.new('redirected back') }
@@ -266,6 +270,24 @@ def get(action, params)
266270
expect(abstract_model).to receive(:all).with(hash_including(include: [{players: :draft}]), nil).once.and_call_original
267271
controller.send(:get_collection, model_config, nil, false).to_a
268272
end
273+
274+
context 'on export' do
275+
before do
276+
controller.instance_variable_set :@action, RailsAdmin::Config::Actions.find(:export)
277+
end
278+
279+
it 'uses the export section' do
280+
RailsAdmin.config Team do
281+
export do
282+
field :players do
283+
eager_load true
284+
end
285+
end
286+
end
287+
expect(abstract_model).to receive(:all).with(hash_including(include: [:players]), nil).once.and_call_original
288+
controller.send(:get_collection, model_config, nil, false).to_a
289+
end
290+
end
269291
end
270292

271293
describe 'index' do

0 commit comments

Comments
 (0)