Skip to content

Commit ab11f3c

Browse files
committed
Yield user-friendly error message when import fail
1 parent ca7d286 commit ab11f3c

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

lib/active_admin_import/dsl.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ module DSL
3535
flash[:notice] = I18n.t('active_admin_import.imported', count: result.imported_qty, model: model_name, plural_model: plural_model_name)
3636
end
3737
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)
38+
flash[:error] = I18n.t('active_admin_import.failed', count: result.failed.count, model: model_name, plural_model: plural_model_name, message: result.failed_message)
3939
end
4040
end
4141
end

lib/active_admin_import/import_result.rb

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,18 @@ def initialize
88
end
99

1010
def add(result, qty)
11-
@failed += result.failed_instances
12-
@total+=qty
11+
@failed += result.failed_instances
12+
@total += qty
1313
end
14-
14+
1515
def imported_qty
1616
total - failed.count
17-
end
18-
17+
end
18+
1919
def has_imported?
2020
imported_qty > 0
2121
end
22-
22+
2323
def has_failed?
2424
@failed.any?
2525
end
@@ -28,5 +28,11 @@ def empty?
2828
total == 0
2929
end
3030

31+
def failed_message
32+
failed.map{|record|
33+
errors = record.errors
34+
(errors.full_messages.zip errors.keys.map{|k| record.send k}).map{|ms| ms.join(' - ')}.join(', ')
35+
}.join(" ; ")
36+
end
3137
end
32-
end
38+
end

0 commit comments

Comments
 (0)