Así, tenemos que al usar el generador de modelos, le pasamos un parámetro que es el nombre y genera una clase, un conjunto de pruebas y la correspondiente migración para crear la tabla en la base de datos.
Para generar todos estos archivos, se usan plantillas y además algunas funciones del framework para nombrar clases y archivos. Recordemos que Rails tiene un principio
Convention over Configuration
Esto significa que se prefiere usar estándares para los nombres de clases, tablas, objetos, referencias y demás items en lugar de estar generando mega-archivos de configuración (web.config o web.xml por ejemplo). Por ejemplo, al usar
./script/generate model account
se crea un modelo Account que se compone de los siguientes archivos y directorios:
Modelo: app/models/account.rb
class Account <>
Prueba: test/unit/account_test.rb
require File.dirname(__FILE__) + '/../test_helper'
class AccountTest <>
Fixture: test/fixture/accounts.yml
Migración: db/migrate/XXX_add_accounts.rb
class CreateAccounts <>
Si observamos un poco el código generado se verá que a partir del nombre del modelo "account" se han derivado varias etiquetas para cada uno de los items:
Mi modelo account
Nombre de clase Account
Clase de prueba AccountTest
Tabla en la BD accounts
Se puede ver que el nombre de modelo se le aplica el estilo Pascal (CamelCase) para obtener el nombre de la clase y que se hace en plural para el nombre de la tabla en la base de datos. Y esto aplica incluso en sustantivos irregulares, por ejemplo:
Mi modelo person
Nombre de clase Person
Clase de prueba PersonTest
Tabla en la BD people
"Person" => singular, "People" => plural. Brillante ¿no?
Pero..... todo se maneja en inglés :( Yo no spiko spaniol.
Como siempre el gran dios google tiene varias respuestas. La primera la encontré en HackerDude que nos habla de algo llamado "Inflector" (¿alguien cursó latín o alemán?) y encontré todavía más detalle en BlogOnRails. De inicio es algo harto sencillo: expresiones regulares. Se tienen que agregar o sustituir varias expresiones regulares para que Rails sepa como hacer plurales o singulares, algo como esto:
Inflector.inflections do |inflect|
inflect.plural /$/, ‘es’
inflect.plural /s$/, ’s’
inflect.plural /z$/i, ‘ces’
inflect.plural /([aeiou])$/i, ‘\1s’
inflect.plural /_(.*)$/, ’s_\1′
inflect.singular /s$/i, ‘’
inflect.singular /ces$/i, ‘z’
inflect.singular /(.*)s_(.*)/i, ‘\1_\2′
inflect.irregular ‘user’, ‘users’
inflect.irregular ‘estado_civil’, ‘estados_civiles’
inflect.uncountable %w( pantalones )
end
Y ¡listo!. A probar con:
Mi modelo organizador
Nombre de clase Organizador
Clase de prueba OrganizadorTest
Tabla en la BD organizadores
Este esquema no es perfecto, pero es pragmático ;)
En otro orden de ideas, ya está agendada la siguiente reunión de la Comunidad .NET de la Cd. de México, la orden del día es la siguiente:
Utilizando Delegados (Segunda Parte) - Octavio Telis
Estilos y Control Templates en WPF - Raúl Guerrero
Source Control en Team Foundation Server - Juan Karam
Por Confirmar Tema - Héctor Obregón
El lugar y la hora:
Fecha: Martes 30 de Enero
Horario: 7:00 a 9:50 p.m.
Lugar: Intersoftware Training
World Trade Center - Piso 35
Mexico D.F.
Y todavía pa'que se animen, habrá rifa de libros entre los asistentes. ¡Qué esperan! Nos vemos el próximo martes.
Finito.
2 comentarios:
La notación pascal no es la misma que la del camello:
EstoEsPascal
estoEsCamello
Un saludo.
¡Ooopss!
Tienes toda la razón.... pero with a little help from your friends...
Publicar un comentario