La Coctelera

Railes y Traviesas

Un blog sobre Ruby on Rails en Castellano

22 Julio 2005

Usando caracteres españoles en las tablas

Esta mañana, a raíz de una pregunta en la lista de correos, he estado haciendo un pequeño experimento, a ver cómo se comporta RoR cuando se utilizan nombres de columnas (y datos) con caracteres acentuados o eñes.

Si eres impaciente, puedes saltar directamente a las conclusiones
.

La prueba

Primero he creado una pequeña tabla en sqlite3:

CREATE TABLE 'niños' (
'id' INTEGER PRIMARY KEY NOT NULL,
'árbol' VARCHAR(80) DEFAULT NULL,
'nombre_niño' VARCHAR(40) DEFAULT NULL
);

A pesar de los acentos y las eñes en los nombres de columnas, no aparece ningún error al crear la tabla, funciona.

Luego metemos un registro para tener algún dato:

sqlite> insert into ni\303\261os values (1,'Casta\303\261o','Sof\303\255a');
sqlite> select * from ni\303\261os;
1|Castaño|Sofía

A continuación generamos el scaffold para ver que obtenemos:

eduardo@[~/desarrollo/test]: ruby script/generate scaffold Ni\303\261o
dependency model
wrong constant name Niño

Ésto sí que no se lo traga. Así que ponemos Nino y vemos el resultado:

Parece que ha cogido bien las columnas pero no visualiza bien ni los nombres ni el contenido.

Al tratar de añadir el nuevo registro, veo que no aparece formulario. Investigando un poco más, resulta que el formulario no aparece en app/views/ninos/_form.html. Debe ser que se ha hecho un lío con los nombres de las columnas al generar el scaffold.

Metemos el código a mano:

<%= error_messages_for 'nino' %>



<%= text_field 'nino', 'árbol' %>



<%= text_field 'nino', 'nombre_niño' %>

Y Bingo, parece que funciona bien la edición:

Y además sale el contenido de los campos visualizado de forma correcta.


Conclusiones

  • Las columnas de tabla con caractéres españoles (y por lo tanto los métodos de las clases que se derivan de ellos) funcionan con Ruby on Rails.
  • Hay cosas de RoR (partes del scaffold) que no funcionan bien con las columnas con caracteres españoles, aunque aparentemente los problemas son fácilmente solucionables.
  • Los datos con caracteres españoles no deben suponer ningún problema. Esto es bastante obvio porque llevamos toda la vida metiendo nuestros nombres con sus acentos y eñes en las BBDD.
  • Trabajar con caracteres acentuados en otro sitio que no sean los datos es un rollo: No se si será por el editor que he usado (ver abajo) o por otra razón, pero constantemente salían los caracteres mál visualizados: bien como códigos estilo \xxx como ? o en el navegador cómo à y cosas por el estilo.

No creo que merezca la pena complicarse la vida con poniéndo los nombres de columnas con caracteres españoles, a menos que tenga una justificación clara, nadie nos garantiza cómo va a funcionar con distintos sistemas y Bases de Datos.

Detalles técnicos

Esta prueba está hecha con:

  • La última versión de rails (0.13.1) corriendo en un iBook G4 con Mac OS 10.4.2.
  • El gestor de base de datos sqlite3.
  • El editor vi.

servido por Eduardo 3 comentarios compártelo

3 comentarios · Escribe aquí tu comentario

sergio

sergio dijo

Es probable que vi este usando latin-1 mientras que la entrada desde la pagina este usando utf-8, no?

22 Julio 2005 | 10:18

Fernando

Fernando dijo

Sólo comentar que the-shaker (la herramienta detrás de lacoctelera) utiliza inglés en su modelo de datos, tanto para los nombres de las tablas como de los campos. No nos complicamos mucho con esto... las codificaciones pueden llegar a dar muchos dolores de cabeza.

Pero sin duda sería ideal, como comenta David DaVinci en la lista de ror-es, que pudiesemos expresar el modelo de datos en nuestra lengua materna... algún día esa opción no será "un problema más" y ruby seguro que estará preparado como cualquier otro o mejor - es de los pocos lenguajes no anglosajones!

22 Julio 2005 | 11:26

Matthew Bennett

Matthew Bennett dijo

El problema de utf8 es cierto, prueba guardando y específicandolo todo en utf8: en tu editor de texto (guardar como...), en MySQL (a nivel de base de datos y/o de columna) y luego en la declaración de los archivos que genera rails (doctype charset etc, etc, etc,..)

Yo tuve algunos problemas con esto hace tiempo (no con ROR) y encontré que había muchos sitios dónde se podría complicar.

¡Un saludo!

14 Octubre 2005 | 10:45

Escribe tu comentario


Sobre mí

Avatar de Eduardo

Railes y Traviesas

Sevilla, España
ver perfil »
contacto »
Soy Edu y este blog es para hablar de una nueva forma de desarrollar aplicaciones web usando Ruby on Rails.

Fotos

Eduardo Fernandez Corrales todavía no ha subido ninguna foto.

¡Anímale a hacerlo!

Buscar

suscríbete

Selecciona el agregador que utilices para suscribirte a este blog (también puedes obtener la URL de los feeds):

¿Qué es esto?

Crea tu blog gratis en La Coctelera