que estoy recibiendo una respuesta en el formato de¿Mejor forma de convertir varias variables de instancia en hash con ruby?
#<Response:0x000... @first = "Charlie", @last=Kelly, ....
y tengo que convertir esto en un hash (por comerciante activo). Actualmente estoy bucle a través de las variables y hacer esto:
response.instance_variables.each do |r|
my_hash.merge!(r.to_s.delete("@").intern => response.instance_eval(r.to_s.delete("@")))
end
Esto funciona, producirá {:first = "charlie", :last => "kelly"}
, pero parece un poco hacky e inestable. Hay una mejor manera de hacer esto ?
editar: Me acabo de dar cuenta de que puedo usar instance_variable_get para la segunda parte de esa ecuación, pero eso aún deja el problema principal.
¿Hay alguna manera de forzar el primer valor en un símbolo en lugar de una cadena? No puedo tocar el código que está recibiendo esto, y las cadenas no funcionan. – cbron
Claro, '.symbolize_keys':' obj.instance_values.symbolize_keys' debería ayudarte! –
Aww hombre perfecto. Empecé a volver a escribir ese método de valores_instancia, pero esto es mucho más fácil. Grazie. – cbron