RFC con before_save

Hola a todos, estoy empezando a desarrollar en RoR, con algunos
tutoriales y manuelaes que me baje del Internet.

Empece con el desarollo de un sistema de Control de Empleados y estoy
atorado en una parte, a ver si alguien puede ayudarme:

Tengo una Tabla “empleados” con los datos: NOMBRE, APELLIDO PATERNO,
MATERNO, SEXO, FECHA DE NACIMIENTO y RFC. Todos estos datos los capturo
menos el RFC el cual se genera con la informacion capturada.

Me dijeron que buscara en los callbacks y que con el before_save podia
generarlo antes de guardar la informacion a la base de datos, pero no se
como. Si alguien tiene alguna idea o sabe como hacerlo, se los
agrdeceria.

Saludos.

Luis,
algo asi deberia hacer el trabajo

class Empleado < AR

before_save :calc_rfc

def calc_rfc
self.rfc = ‘calculo del rfc’
end
end

Saludos
Hernán

2008/6/6 Luis M. [email protected]:

Hernan, gracias por tu comentario, pero creo que no supe explicarme, el
problema que tengo es de SIntaxis, lo que yo necesito es saber como
manejo los datos que tengo en mi variable @trabajadores antes de
guardarlos en la Base de Datos.

Por ejemplo, en mi Sistema yo capturo NOMBRE, APELLIDO_PATERNO y
APELLIDO_MATERNO, imaginate que quiero guardar en mi campo RFC las
primeras 2 letras de APELLIDO_PATERNO + la primera letra de
APELLIDO_MATERNO + la primera letra de NOMBRE, y asi ir formando mi
RFC.

No se si quede un poco mas claro y de ante mano, gracias.

Saludos

1.- Aprende un poco de Ruby o no podrás hacerlo
2.- El método que te dijo Hernan es perfectamente válido para hacer lo
que
necesitas

3.- Puedes acceder a la instancia que estás manejando con self, no te
preocupes de guardar, solo asigna el valor al campo rfc.

before_save :calc_rfc

def calc_rfc
self.rfc = expresión en ruby que devuelve lo que necesitas.
end

El día 9 de junio de 2008 6:27, Luis M. <
[email protected]> escribió:

1.- Aprende un poco de Ruby o no podrás hacerlo

+1

2.- El método que te dijo Hernan es perfectamente válido para hacer lo que
necesitas

Supongo que entonces la pregunta es más bien sobre cómo acceder a los
parámetros para la expresión de cálculo del rfc

Por ejemplo, en mi Sistema yo capturo NOMBRE, APELLIDO_PATERNO y
APELLIDO_MATERNO, imaginate que quiero guardar en mi campo RFC las
primeras 2 letras de APELLIDO_PATERNO + la primera letra de
APELLIDO_MATERNO + la primera letra de NOMBRE, y asi ir formando mi
RFC.

Si es así te valdría algo como:

before_save :calc_rfc

def calc_rfc
self.rfc = “#{apellido_paterno[0,2]} - #{apellido_materno[0,1]} -
#{nombre[0,1]}”
end

A ver si hay suerte y eso era lo que buscabas :slight_smile:
En cualquier caso el punto número 1 siempre va bien.

Una duda mas… como ya saben quiero generar el RFC de los empledos y
tengo algunas reglas, pero algunas no me funcionan, les paso una parte
del codigo a ver si me pueden ayudar, no marca error, pero no hago lo
que quiere:

Lo que necesito es que si el Nombre es Jose o Maria o Ma. se elimine del
nombre esa parte: ejemplo si se llama JOSE LUIS, quiero que se elimine
JOSE y quede solo LUIS.

def calculo_rfc

excepciones = [ “JOSE”, “MARIA”, “J”, “J.”, “MA”, “MA.” ]

self.nombre = nombre.upcase
nombre_temp = nombre
if nombre_temp.include? excepciones.to_s
nombre_temp = nombre.delete excepciones
end

self.rfc = rfc_temp
end

Saludos

if nombre_temp.include? excepciones.to_s
nombre_temp = nombre.delete excepciones
end

self.rfc = rfc_temp

en esta ultima linea no seria???:
self.rfc = nombre_temp

No tengo mucha idea y no se si lo demas tiene sentido, pero eso creo que
es
asi

El día 10 de junio de 2008 20:42, Luis M. <
[email protected]> escribió:

Andrés Gutiérrez wrote:

if nombre_temp.include? excepciones.to_s
nombre_temp = nombre.delete excepciones
end

self.rfc = rfc_temp

en esta ultima linea no seria???:
self.rfc = nombre_temp

No tengo mucha idea y no se si lo demas tiene sentido, pero eso creo que
es
asi

El día 10 de junio de 2008 20:42, Luis M. <
[email protected]> escribió:

Tienes razon, Lo siento creo que pase mal mi codigo la ultima linea es
donde asigno el valor a mi campo RFC, y seria

self.rfc = nombre_temp

asi lo tengo y no funciona, como que no entra a verificar si mi variable
nombre_temp incluye los valores de excepciones

Saludos

Gracias a todos, segui sus consejos y ya funciona.

Saludos