Skip to content

Commit ed138f2

Browse files
committed
extract default result import proc
1 parent 561c93a commit ed138f2

File tree

1 file changed

+20
-16
lines changed

1 file changed

+20
-16
lines changed

lib/active_admin_import/dsl.rb

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,24 @@ module DSL
2323
# +plural_resource_label+:: pluralized resource label value (default config.plural_resource_label)
2424
#
2525

26+
27+
DEFAULT_RESULT_PROC = proc do |result, options|
28+
29+
model_name = options[:resource_label].downcase
30+
plural_model_name = options[:plural_resource_label].downcase
31+
if result.empty?
32+
flash[:warning] = I18n.t('active_admin_import.file_empty_error')
33+
else
34+
if result.has_imported?
35+
flash[:notice] = I18n.t('active_admin_import.imported', count: result.imported_qty, model: model_name, plural_model: plural_model_name)
36+
end
37+
if result.has_failed?
38+
flash[:error] = I18n.t('active_admin_import.failed', count: result.failed.count, model: model_name, plural_model: plural_model_name)
39+
end
40+
end
41+
end
42+
43+
2644
def active_admin_import(options = {}, &block)
2745
options.assert_valid_keys(*VALID_OPTIONS)
2846

@@ -53,7 +71,6 @@ def active_admin_import(options = {}, &block)
5371
end
5472
end
5573

56-
5774

5875
collection_action :do_import, method: :post do
5976
authorize!(ActiveAdminImport::Auth::IMPORT, active_admin_config.resource_class)
@@ -65,24 +82,11 @@ def active_admin_import(options = {}, &block)
6582
@importer = Importer.new(options[:resource_class], @active_admin_import_model, options)
6683
begin
6784
result = @importer.import
85+
6886
if block_given?
6987
instance_eval &block
7088
else
71-
72-
model_name = options[:resource_label].downcase
73-
plural_model_name = options[:plural_resource_label].downcase
74-
75-
76-
if result.empty?
77-
flash[:warning] = I18n.t('active_admin_import.file_empty_error')
78-
else
79-
if result.has_imported?
80-
flash[:notice] = I18n.t('active_admin_import.imported', count: result.imported_qty, model: model_name, plural_model: plural_model_name)
81-
end
82-
if result.has_failed?
83-
flash[:error] = I18n.t('active_admin_import.failed', count: result.failed.count, model: model_name, plural_model: plural_model_name)
84-
end
85-
end
89+
instance_exec result, options, &DEFAULT_RESULT_PROC
8690
end
8791
rescue ActiveRecord::Import::MissingColumnError, NoMethodError => e
8892
flash[:error] = I18n.t('active_admin_import.file_error', message: e.message)

0 commit comments

Comments
 (0)