Rovatiana/LearnPulse
1
1module StringifyIds2 def stringify_ids(hash)3 hash.keys.each_with_object({}) do |key, result|4 string_key = key.to_s5 original_value = hash[key]6 7 result[key] = if original_value.is_a?(Array)8 stringify_ids_in_array(string_key, original_value)9 elsif original_value.respond_to?(:key?)10 stringify_ids(original_value)11 elsif (string_key == 'id' || string_key.ends_with?('_id')) && original_value.is_a?(Numeric)12 original_value.to_s13 else14 original_value15 end16 end17 end18 19 private20 21 def stringify_ids_in_array(key, array)22 if key.ends_with?('_ids')23 array.map(&:to_s)24 else25 array.map do |element|26 if element.respond_to?(:key?)27 stringify_ids(element)28 else29 element30 end31 end32 end33 end34end35 