@@ -21,25 +21,12 @@ module ClassMethods
2121 # id 'an_id_field' => 'id_field_in_data'
2222 # id an_id_field: 'id_field_in_data', :another_id_field: 'id_field2_in_data'
2323 #
24- def id ( *fields ) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/MethodLength,Metrics/PerceivedComplexity
24+ def id ( *fields )
2525 return @id_fields if @id_fields
2626
2727 raise ArgumentError , "No 'id' was defined, but one is expected." if fields . empty?
2828
29- @id_fields = { }
30- if fields . first . is_a? ( Hash )
31- fields . first . each { |key , value | @id_fields [ key . to_s ] = value . to_s }
32- else
33- fields . map ( &:to_s ) . each do |field |
34- field_as_string = field . to_s
35- @id_fields [ field_as_string ] = field_as_string
36- end
37- end
38-
39- @id_fields . each_key do |field |
40- define_method ( field ) { instance_variable_get :"@#{ field } " }
41- end
42-
29+ @id_fields = load_attributes ( fields )
4330 @id_fields
4431 end
4532
@@ -103,6 +90,25 @@ def sanitize_mapping(fields_to_class_map) # rubocop:disable Metrics/MethodLength
10390 end
10491 fields_map
10592 end
93+
94+ def load_attributes ( fields ) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
95+ id_fields = { }
96+
97+ if fields . first . is_a? ( Hash )
98+ fields . first . each { |key , value | id_fields [ key . to_s ] = value . to_s }
99+ else
100+ fields . map ( &:to_s ) . each do |field |
101+ field_as_string = field . to_s
102+ id_fields [ field_as_string ] = field_as_string
103+ end
104+ end
105+
106+ id_fields . each_key do |field |
107+ define_method ( field ) { instance_variable_get :"@#{ field } " }
108+ end
109+
110+ id_fields
111+ end
106112 end
107113
108114 def initialize ( given_values = nil ) # rubocop:disable Metrics/MethodLength
0 commit comments