2017-04-06 5 views
0

Ich habe zwei verschiedene Arten von codes.Gruppieren der Reihe von Codes

AllCodes = [ 
    { 
    group_name: 'Marked', 
    group_codes: [ 
     { 
     code: '1A', 
     description: 'Marked.' 
     } 
    ], 
    .. //next group codes. 
    } 
] 

AllCodes = [ 
    { 
    code: '2', 
    description: 'Located. Facilities Marked.' 
    } 
    .. //next codes. 
] 

Ich muss ein Array dieses Formats bilden.

Ich habe es so gemacht, aber ich mag diesen Ansatz nicht wirklich, wie kann ich den Code austrocknen?

def up 
    Account.all.each do |account| 
    arrayed_codes = [] 
    account.one_call_center.response_codes_repository_class::AllCodes.collect do |codes| 
     if response_code[:group_codes] 
     response_code[:group_codes].each do |group_codes| 
      arrayed_codes << { 
      code: group_codes[:code], 
      description: group_codes[:description] 
      } 
     end 
     else 
     arrayed_codes << { 
      code: response_code[:code], 
      description: response_code[:description] 
     } 
     end 
    end 
    arrayed_codes.each do |res_code| 
     ResponseCode.create!(account: account, 
          one_call_center_id: account.one_call_center.id, 
          close_code: res_code[:code], 
          description: res_code[:description], 
          ticket_types: account.one_call_center.ticket_types.keys) 
    end 
    end 
end 

Antwort

1
# obj is an each element of your AllCodes array 

codes = AllCodes.inject([]) do |codes_array, obj| 
    if obj.has_key?(:group_codes) 
    codes_array += obj[:group_codes] 
    else 
    codes_array << obj 
    end 
end 

codes_array ist ein Array injiziert. Iterating über Ihre AllCodes, wenn aktuelles Objekt has_key?(:group_codes), sollten wir nehmen obj[:group_codes] (weil es bereits ein Array von benötigten Format ist), so dass wir unsere codes_array damit verschmelzen: codes_array += obj[:group_codes]. Wenn es diesen Schlüssel nicht hat, ist es bereits Hash des benötigten Formats. Also fügen wir dieses Element einfach zum Array hinzu.

Verwandte Themen