Estoy llamando a una API de terceros (escrita en PHP) pasando algunos pares clave/valor.Ruby Hash.new vs Hash literal
Este código funciona:
h = Hash.new
h['first_name'] = "Firstname"
h['last_name'] = "Lastname"
APICall([h]) # Record gets created
Esto no es así:
h = {'first_name' => "Firstname", 'last_name' => "Lastname"}
APICall([h]) # Record does not get created
Cuando yo tiro el hash a la consola en ambos casos las tengo la misma estructura de datos. Entonces, ¿por qué es que la primera forma funciona pero la segunda no?
EDITAR: No estoy seguro de si esto importa, pero estoy usando Ruby 1.8.7p72/Linux. También uno de los pares clave/valor es una cadena de imagen codificada en Base64.
Hay no hay razón para que esto suceda En mis pruebas, 'Hash.object_id' devolvió el mismo valor que' Hash.new.class.object_id' y '{} .class.object_id'. Son todos de la misma clase. ¿Recibes algún error de la llamada API? – Brandan
Me parecen iguales. Si esto es todo tu código, no estoy seguro de por qué uno funcionaría y el otro no. Si esta es una aplicación de Rails, me gustaría ver que se ve afectado por el uso de un Hash donde se requiere [HashWithIndifferentAccess] (http://as.rubyonrails.org/classes/HashWithIndifferentAccess.html) (esto es solo una corazonada , si su código es como el anterior, este no sería su problema). – gar
@Brandan: desafortunadamente no hay errores devueltos por la API. –