BUenas amigos tengo una duda y agradeceria cualquier ayuda.
Tengo en un modelo una validacion con expresion regular pero tengo esa
expresion en varios archivos y me gustaria es desde el modelo invocar
una funcion que este por ejemplo en el helper y hay se haga la
validacion y asi evitar modificar la expresion en todos los archivos si
no modificarla en alguna funcion.
Si no e sido claro por favor diganme y tratare de hacerme entender
El día 5 de noviembre de 2008 17:11, Jhon K. [email protected]
escribió:> BUenas amigos tengo una duda y agradeceria cualquier ayuda.
Tengo en un modelo una validacion con expresion regular pero tengo esa
expresion en varios archivos y me gustaria es desde el modelo invocar
una funcion que este por ejemplo en el helper y hay se haga la
validacion y asi evitar modificar la expresion en todos los archivos si
no modificarla en alguna funcion.
Puedes crearte una clase Utils en la carpeta /lib
Rollo /lib/utils.rb
class Utils
def self.is_valid( string )
return string ~= /que siii/
end
end
El Wednesday 05 November 2008 17:11:03 Jhon K.
escribió:> BUenas amigos tengo una duda y agradeceria cualquier ayuda.
Tengo en un modelo una validacion con expresion regular pero tengo esa
expresion en varios archivos y me gustaria es desde el modelo invocar
una funcion que este por ejemplo en el helper y hay se haga la
validacion y asi evitar modificar la expresion en todos los archivos si
no modificarla en alguna funcion.
Si no e sido claro por favor diganme y tratare de hacerme entender
Igual lo mejor es que tengas la expresion regular como una constante en
el
modelo por ejemplo. Y la usas con Modelo::CONSTANTE
BUenas amigos tengo una duda y agradeceria cualquier ayuda.
Tengo en un modelo una validacion con expresion regular pero tengo esa
expresion en varios archivos y me gustaria es desde el modelo invocar
una funcion que este por ejemplo en el helper y hay se haga la
validacion y asi evitar modificar la expresion en todos los archivos si
no modificarla en alguna funcion.
Si no e sido claro por favor diganme y tratare de hacerme entender
Las extensiones de las clases las meto en lib/aplicacion.rb, y luego
meto un
require ‘aplicacion.rb’
en el archivo de configuración config/environment.rb
El d�a 5 de noviembre de 2008 17:11, Jhon K. [email protected]
escribi�:> BUenas amigos tengo una duda y agradeceria cualquier ayuda.
Tengo en un modelo una validacion con expresion regular pero tengo esa
expresion en varios archivos y me gustaria es desde el modelo invocar
una funcion que este por ejemplo en el helper y hay se haga la
validacion y asi evitar modificar la expresion en todos los archivos si
no modificarla en alguna funcion.
Puedes crearte una clase Utils en la carpeta /lib
Rollo /lib/utils.rb
class Utils
def self.is_valid( string )
return string ~= /que siii/
end
end
La requieres en el /config/environment.rb con
require ‘utils’
Y la usas donde quieras con
Utils.is_valid( “que siii es v�lido” )
Todo esto al vuelo… seguro que hay errores.
f.
Gracias por responder, e seguido los pasos o consejos que me has dado
pero me muestra unos errores por ejemplo
si hago lo cambios que mencionas me muestra el siguiente error
undefined method `is_valid’ for WEBrick::Utils:Module
si hago lo cambios que mencionas y detengo el servidor y lo pongo a
correr otra vz el sistema no corre, vueleve a correr cuando quito esta
linea
require ‘utils’ de /config/environment.rb
Las extensiones de las clases las meto en lib/aplicacion.rb, y luego
meto un
require ‘aplicacion.rb’
en el archivo de configuración config/environment.rb
s2
Gracias por responder amigos
una pregunta o duda q tengo con lo que me sugieres es que en la carpeta
lib/
no tengo un archivo llamado aplicacion.rb , un archivo con ese nombre lo
tengo el la carpeta app/controllers
El día 6 de noviembre de 2008 17:40, Jhon K. [email protected]
escribió:>> end
objeto.url.pon_http
una pregunta o duda q tengo con lo que me sugieres es que en la carpeta
lib/
no tengo un archivo llamado aplicacion.rb , un archivo con ese nombre lo
tengo el la carpeta app/controllers
–
Posted via http://www.ruby-forum.com/.
Gracias por responder, e seguido los pasos o consejos que me has dado
pero me muestra unos errores por ejemplo
si hago lo cambios que mencionas me muestra el siguiente error
undefined method `is_valid’ for WEBrick::Utils:Module
si hago lo cambios que mencionas y detengo el servidor y lo pongo a
correr otra vz el sistema no corre, vueleve a correr cuando quito esta
linea
require ‘utils’ de /config/environment.rb
El d�a 6 de noviembre de 2008 17:40, Jhon K. [email protected]
escribi�:>> end
objeto.url.pon_http
una pregunta o duda q tengo con lo que me sugieres es que en la carpeta
lib/
no tengo un archivo llamado aplicacion.rb , un archivo con ese nombre lo
tengo el la carpeta app/controllers
–
Posted via http://www.ruby-forum.com/.
Gracias por responder amigos
una pregunta o duda q tengo con lo que me sugieres es que en la carpeta
lib/
no tengo un archivo llamado aplicacion.rb , un archivo con ese nombre lo
tengo el la carpeta app/controllers
La carpeta lib/ es para que pongas tu librerÃa; no necesitas que exista
ya el archivo aplicacion.rb , puedes crearlo tú mismo, o puedes crearlo
con otro nombre (kaka.rb), siempre que en la configuración metas el
require ‘kaka.rb’
No confundas con app/controllers/application.rb, que es el controlador
del que heredan todos los demás… lo que metas en
app/controllers/application.rb será accesible para todos los
controllers, pero no para los modelos!!
Gracias por responder, e seguido los pasos o consejos que me has dado
pero me muestra unos errores por ejemplo
si hago lo cambios que mencionas me muestra el siguiente error
undefined method `is_valid’ for WEBrick::Utils:Module
si hago lo cambios que mencionas y detengo el servidor y lo pongo a
correr otra vz el sistema no corre, vueleve a correr cuando quito esta
linea
require ‘utils’ de /config/environment.rb
si me puedes dar otro consejo lo agradeceria
En vez de
require ‘utils’
prueba con
require ‘utils.rb’
y reinicia el servidor
s
Hola amigos e estado probando su sugerencias, tengo los archivos de esta
manera
-en el environment.rb
coloque esto require ‘utils.rb’
-en el modelo
validates_format_of :nombre, :with => Utils.is_valid(:nombre),
:message =>“debe ser valido”
En general no es recomendable dos archivos con el mismo nombre en
paths donde Rails busca. En particular application.rb si solo hay uno
mejor.
El directorio lib esta en ese path. Si llamas al fichero
lib/my_app_utils.rb
y en el defines una clase o modulo que se llame MyAppUtils no es
necesario tampoco ningun require ya que la carga automatica de
clases/modulos la encontrara.
Tener un lugar asi para utilidades “transversales” es una practica
comun.
Puedes modificar el return
as�:return not salida.nil?
O cambiar todo el m�todo si lo que quieres es s�lo saver si coincide
con la regexp o no… y no recuperar todas las ocurrencias mejor
as�:
return string ~= num_expr
y yast�…
Ah�… un consejo de nomenclatura cambia el nombre del m�todo de
is_valid a is_valid? que se suele usar cuando la funci�n devuelve un
booleano.
(Ya s� que yo te lo dije mal)
Suerte
f.
f.
yo habia probado con un simple return true o false pero me da el mismo
error
can’t convert Symbol into String
otra cosa si coloco esto return string ~= num_expr
el servidor no arranca cuando quiero reiniciarlo no se si sera por el
caracter ~ , bueno la verdad es q noc como trabaja esa instruccion
Puedes modificar el return
así:return not salida.nil?
O cambiar todo el método si lo que quieres es sólo saver si coincide
con la regexp o no… y no recuperar todas las ocurrencias mejor
así:
return string ~= num_expr
y yastá…
Ah¡… un consejo de nomenclatura cambia el nombre del método de
is_valid a is_valid? que se suele usar cuando la función devuelve un
booleano.
En segundo lugar creo que el error está en el modelo, prueba así:
validates_format_of :nombre, :with => /\A[
,º&%;:="(){}?¿'|$#áéíóúÁÉÍÓÚa-zA-Z0-9@/\t\r\n._-]*\z/,
:message =>“debe ser valido”
O igual mejor directamente:
validates_format_of :nombre, :with =>
/\A[,º&%;:="(){}?¿'|$#áéíóúÁÉÍÓÚa-zA-Z0-9@/\t\r\n._-]*\z/ , :message
=>“debe ser valido”
Es que creo que el validates_format_of requiere una expresión regular
no un booleano:
El día 7 de noviembre de 2008 15:21, Jhon K. [email protected]
escribió:> Fernando G. wrote:
yo habia probado con un simple return true o false pero me da el mismo
error
can’t convert Symbol into String
otra cosa si coloco esto return string ~= num_expr
el servidor no arranca cuando quiero reiniciarlo no se si sera por el
caracter ~ , bueno la verdad es q noc como trabaja esa instruccion
En segundo lugar creo que el error está en el modelo, prueba
así:
validates_format_of :nombre, :with => Utils.is_valid( self.nombre ),
:message =>“debe ser valido”
El Friday 07 November 2008 16:09:36 Jhon K. escribió:
validates_format_of :nombre, :with => /\A[
Es que creo que el validates_format_of requiere una expresi�n regular
Tienes razon pana con respecto a q requiere una expresion y no un
archivos actualizando la expresion.
Hasta ahora me funciona, cualquier cosa te avisare si la actualizo a
hago alguna modificacion.
Muchas gracias por la ayuda, que bueno es este foro
para eso en vez de usar un metodo usa una constante, por ejemplo cambia
lib/utils.rb:
module Utils
CONSTANTE = /\A[,º&%;:="(){}?¿’|$#a-zA-Z0-9@/\t\r\n._-]*\z/
end
o no uses el lib/utils.rb, y pon la constante directamente en el modelo.
Yo lo
veo mejor asà si esa expresion regular solo se usa para ese modelo.