Estoy viendo lo mismo también.
Según los documentos la opción :dasherize
a to_xml
debería hacer el truco.
Algunas configuraciones están disponibles a través de las opciones. [...] Este comportamiento se puede controlar con: only,: except,: skip_instruct,: skip_types,: dasherize y: camelize [...] El valor predeterminado es dasherize todos los nombres de columna, pero puede deshabilitar esta configuración : dasherize a falso. Configuración: camelize to true camelize todos los nombres de columna; esto también anula: dasherize.
Por lo tanto, parece que, como mínimo:
asdf.to_xml(:dasherize => true)
debe hacerlo, y añadiendo la opción :camelize
debe forzarlo.
=> "<?xml version="1.0" encoding="UTF-8"?>\n<Hash>\n <New York type="integer">33</New York>\n <Versailles type="integer">3231</Versailles>\n</Hash>\n"
Así que, tal vez alguien pueda 'explicar la anomolia.
El problema es que dasherize está cambiando el subrayado al guión, no el espacio para lanzar. Lo mismo para camelize: "New_York is great" .camelize = "NewYork is great". Sin embargo, to_xml no debería decepcionarnos con un xml de formato incorrecto. – standup75
Acerca de dasherize y espacio, ¡Buen punto! ¡Duh !, y, sí, to_xml debería generar XML válido o generar una excepción o al menos tener una forma de notificarnos el problema. –