33
44module RailsAdmin
55 class CSVConverter
6- def initialize ( objects = [ ] , schema = { } )
6+ def initialize ( objects = [ ] , schema = nil )
77 @fields = [ ]
88 @associations = [ ]
9+ schema ||= { }
910
1011 return self if ( @objects = objects ) . blank?
1112
1213 @model = objects . dup . first . class
1314 @abstract_model = RailsAdmin ::AbstractModel . new ( @model )
1415 @model_config = @abstract_model . config
1516 @methods = [ ( schema [ :only ] || [ ] ) + ( schema [ :methods ] || [ ] ) ] . flatten . compact
16- @fields = @methods . collect { |m | export_fields_for ( m ) . first }
17+ @fields = @methods . collect { |m | export_field_for ( m ) } . compact
1718 @empty = ::I18n . t ( 'admin.export.empty_value_for_associated_objects' )
1819 schema_include = schema . delete ( :include ) || { }
1920
2021 @associations = schema_include . each_with_object ( { } ) do |( key , values ) , hash |
21- association = association_for ( key )
22+ association = export_field_for ( key )
23+ next unless association &.association?
2224 model_config = association . associated_model_config
2325 abstract_model = model_config . abstract_model
2426 methods = [ ( values [ :only ] || [ ] ) + ( values [ :methods ] || [ ] ) ] . flatten . compact
@@ -28,7 +30,7 @@ def initialize(objects = [], schema = {})
2830 model : abstract_model . model ,
2931 abstract_model : abstract_model ,
3032 model_config : model_config ,
31- fields : methods . collect { |m | export_fields_for ( m , model_config ) . first } ,
33+ fields : methods . collect { |m | export_field_for ( m , model_config ) } . compact ,
3234 }
3335 hash
3436 end
@@ -61,12 +63,8 @@ def to_csv(options = {})
6163
6264 private
6365
64- def association_for ( key )
65- export_fields_for ( key ) . detect ( &:association? )
66- end
67-
68- def export_fields_for ( method , model_config = @model_config )
69- model_config . export . fields . select { |f | f . name == method }
66+ def export_field_for ( method , model_config = @model_config )
67+ model_config . export . fields . detect { |f | f . name == method }
7068 end
7169
7270 def generate_csv_string ( options )
0 commit comments