Buenas, necesitaba configurar el plural de mi modelo, asi que me he
creado un inflecto tal como
así:
Inflector.inflections do |inflect|
inflect.irregular ‘origen’, ‘origenes’
end
Creo mi scaffold, script/generate scaffold origen nombre:string y me
crea el controlador Origenes, el modelo Origen y la tabla origenes,
hasta ahí todo bien.
pero al abrir el controlador http://mi_web.com/origenes y su métido index:
@origenes = Origen.find(:all)
me está buscando la tabla origens, en vez de origenes.
Mysql::Error: Table ‘my_app_development.origens’ doesn’t exist: SELECT *
FROM origens
Necesito poner algo más por ahí? Gracias
El Wednesday 09 April 2008 13:17:26 Miguel Angel Calleja Lázaro
escribió:> pero al abrir el controlador http://mi_web.com/origenes y su métido index:
@origenes = Origen.find(:all)
me está buscando la tabla origens, en vez de origenes.
Mysql::Error: Table ‘my_app_development.origens’ doesn’t exist: SELECT *
FROM origens
Necesito poner algo más por ahí? Gracias
Yo esperaria que usara el inflector y no buscase orignes, pero bueno,
prueba a
poner en el modelo:
set_table_name ‘origenes’
–
Sergio Cambra .:: entreCables - Symbol Servicios Informáticos S.L. ::.
Nicolás Guillén 6, locales 2 y 3. 50.018 Zaragoza
T) 902 021 404 F) 976 52 98 07 E) [email protected]
Sergio Cambra .:: entreCables - Symbol Servicios Informáticos S.L. ::.
escribió:> El Wednesday 09 April 2008 13:17:26 Miguel Angel Calleja Lázaro escribió:
pero al abrir el controlador http://mi_web.com/origenes y su métido index:
Yo esperaria que usara el inflector y no buscase orignes, pero bueno, prueba a
poner en el modelo:
set_table_name ‘origenes’
Lo había hecho hace un ratín y me sale otro error que no reconoce el helper:
|undefined local variable or method `new_origen_path’ for #ActionView::Base:0x2aaaac36c910
Si va a ser mucho lío, casi mejor que pongo los controladores en inglés,
pero si hay solución para ésto mejor.
|
hola,
Buenas, necesitaba configurar el plural de mi modelo, asi que me he
creado un inflecto tal como así:
no te sé decir exactamente cómo va el inflector, pero te doy un
consejo… cosas como los inflectors, o cambiar valores por defecto como
set_table_name en un modelo y cosas así tienen mucho peligro
en el mundo rails, mucha gente lleva el principio de ‘convention over
configuration’ demasiado lejos y he encontrado varios plugins que van a
tiro hecho y sólo funcionan si las cosas están como esperarías en la
convention, sin tener en cuenta que en muchos casos el ‘over
configuration’ significa que la configuración sí es posible, aunque
sea deseable la convención. A este tipo de comportamiento nosotros le
llamamos ‘less is morro’.
después de algunas malas experiencias de ese estilo, decidí hacer caso a
bruce lee y ser water, my friend… así que cuando tengo que usar
configuración para cambiar una convención me lo pienso muuuuuuuucho…y
a no ser que sea realmente necesario no lo cambio.
saludos,
javier ramírez
javier ramirez
escribió:> set_table_name en un modelo y cosas así tienen mucho peligro
bruce lee y ser water, my friend… así que cuando tengo que usar
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es
Aha, ya lo esto comprobando, si arreglo una cosa me peta por otro
lado… al final lo mejor será crearme los controllers y modelos en
inglés. Gracias
El dÃa 9/04/08, javier ramirez [email protected] escribió:
hola,
no te sé decir exactamente cómo va el inflector, pero te doy un
consejo… cosas como los inflectors, o cambiar valores por defecto como
set_table_name en un modelo y cosas asà tienen mucho peligro
Hola Javier,
Quieres decir que utilizas los nombres de los modelos en inglés y tb los
foreign keys, para facilitar la convención ?
En estos momentos es muy importante tu respuesta ya que estoy iniciando
un
nuevo proyecto.
Gracias por tus aportaciones.
Un Saludo.
Con el inflector no deberia ser necesario usar set_table_name. Debe de
haber un problema (trivial, probablemente) en el orden en que estas
definiendo las cosas.
Donde estas definiendo la inflexion? En config/environment.rb?
Es posible que por alguna razon, tu modelo Origen sea cargado antes de
evaluar el fichero donde redefines el inflector.
Tienes alguna referencia a la clase Origen en algun lugar fuera de
controladores y modelos?
Sent via BlackBerry from T-Mobile
aprendiz basico
escribió:>
Quieres decir que utilizas los nombres de los modelos en inglés y tb
los foreign keys, para facilitar la convención ?
En estos momentos es muy importante tu respuesta ya que estoy
iniciando un nuevo proyecto.
Gracias por tus aportaciones.
Un Saludo.
Si claro, si lo haces en inglés tienes que tenerlo todo en inglés:
order ----1:N—>line_items
order (id, name)
line_items (id, name, order_id)
On 09/04/2008, aprendiz basico [email protected] wrote:
El día 9/04/08, javier ramirez [email protected] escribió:
Hola Javier,
Quieres decir que utilizas los nombres de los modelos en inglés y tb los
foreign keys, para facilitar la convención ?
En estos momentos es muy importante tu respuesta ya que estoy iniciando un
nuevo proyecto.
Gracias por tus aportaciones.
Mucha gente (¿la mayoría?) preferimos utilizar exclusivamente el
inglés para nombres de recursos, modelos, tablas, columnas. Es
másconciso; a mi entender más elegante y te evita choques con inflector y
mecanismos similares.
–
Manuel, que
piensa que eres una excelente persona y medra en torno a
http://simplelogica.net y/o simplelogica.net
Recuerda comer mucha fruta y verdura.
El dÃa 9/04/08, Manuel González Noriega
[email protected]
escribió:
Mucha gente (¿la mayorÃa?) preferimos utilizar exclusivamente el
inglés para nombres de recursos, modelos, tablas, columnas. Es más
conciso; a mi entender más elegante y te evita choques con inflector y
mecanismos similares.
Eres rápido Manuel
Seguiré este consejo. En los nombres de métodos y
variables tiene alguna implicación que
lo manejemos en español ? Aunque no tengo tanto problema para leer el
inglés, quisiera tener más fluidez al estar
desarrollando a altas horas de la noche. Muchas gracias Manuel.
Un saludo.
Has añadido el inflector despues de generar el modelo? Digo eso porque
el generar el modelo te ha generado una migración donde la
“pluralización” es “incorrecta” desde tu punto de vista, pero no lo es
porque en el momento de generarla tu Rails no tenia ni idea de que
habia un inflector para “Origen”.
Vuelvelo a hacer y veras que es
así.
Un saludo,
Francesc
Puedes mandar el fichero de migración que crea la tabla? A mi me ha
generado esto.
class CreateOrigenes < ActiveRecord::Migration
def self.up
create_table :origenes do |t|
t.timestamps
end
end
def self.down
drop_table :origenes
end
end
Un saludo,
Francesc
Francesc E.
escribió:>
def self.down
drop_table :origenes
end
end
Un saludo,
Francesc
class CreateOrigenes < ActiveRecord::Migration
def self.up
create_table :origenes do |t|
t.string :name
t.timestamps
end
end
def self.down
drop_table :origenes
end
end
Y crea correctamente la tabla. Estoy usando rails 2.0.2, es raro, puse
el inflactor en el environment, luego cree el scaffold, me generó todo,
se creó la tabla, pero peta al hacer Origen.find(:all). Estoy trabajando
en development, no hace falta reiniciar servidor ni nada no?
Que raro … yo he hecho lo mismo y me funciona correctamente.
Reinicia el server a ver que pasa.
Francesc
Francesc E.
escribió:> Que raro … yo he hecho lo mismo y me funciona correctamente.
Reinicia el server a ver que pasa.
Francesc
Pues mira por donde que si reinicio el servidor funciona, ahora si lo
hace bien, pensaba que sólo tenía que reiniciar si estaba en producción,
o se le ha ido la olla o no se. Gracias a todos por echarme una mano,
voy a optar por ponerlo todo en inglés de todas formas y quitarme de
líos y seguir la
convencción
Yo lo hago normalmente en ingles por seguir una orden, el codigo en
ingles, ruby en ingles, los comentarios en ingles … pero no hay
ninguna convención que diga que las cosas han de estar en ingles.
De hecho con los inflectors, se puede arreglar la pluralización y todo
deberia funcionar correctamente. Al igual que deberia funcionar
correctamente utilizar el set_table_name
y algun otro hack. De
hecho, me jugaria un pez de colores a que Rails setea el nombre de la
tabla a partir del modelo con el mismo set_table_name
.
def set_table_name(value = nil, &block)
define_attr_method :table_name, value, &block
end
alias :table_name= :set_table_name
....

Un saludo,
Francesc
On Apr 9, 2008, at 5:48 PM, Miguel Angel Calleja Lázaro wrote:
Gracias a todos por echarme una mano,
voy a optar por ponerlo todo en inglés de todas formas y quitarme de
líos y seguir la convencción
Francesc E.
escribió:> _______________________________________________
Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es
No, ya tenía el inflector en environment.rb y después cree el scaffold
origen, donde me creó el controlador, modelo, migración, hice el rake
db:migrate me creó la tabla origenes y las nomenclaturas de todo lo
demás es correcto.
[email protected]
escribió:>
Pues lo tengo definido al final del config/environtment.rb y no hago
ninguna referencia a la clase fuera. Peta cuando intenta leer
@origenes=Origen.find(:all) en su métido index, está buscando la tabla
origens que no existe.
Los cambios que hagas en config, plugins, lib, y otros lugares “no
standard” no son refrescados automaticamente en modo desarrollo.
Es mas seguro asumir que unicamente los archivos de app/models y app/
controllers (y alguno que otro lugar) son refrescados.
si abres la consola (script/console) y escribes “origen”.pluralize que
te sale como resultado?