Params/string

Hola, estoy desarrollando un administrador de base de datos y necesito
mantener un historial de los cambios realizados por los usuarios.
Esto significa que cada vez que accedo al metodo update, create o
destroy, tengo que guardar cierta informacion en una tabla de historial,
no hay mayor problema con eso. Con el problema con el que me encuentro
es que necesito guardar los datos antiguos en un campo tipo string y los
nuevos en otro campo también de tipo string.
Intenté hacer los siguiente:

ModificacionesEmpresa.create(:empresa_id =>@empresa.id, :usuario_id =>
session[:user_id],:tipo => ‘U’, :tupla_nuevo => params[:empresa].to_s,
:tupla_antiguo => @tupla)

Pero ni params[:empresa].to_s ni :tupla_antiguo =>
@tupla
quedaron guardados como informacion legible… creo que deberé inventar
un método que me vaya guardando la información en un gran string y ahi
guardarlo,…mientras estoy en eso,
Alguien tiene una solución más inteligente?

Una alternativa es convertir el objeto a yaml :

h = {}
h[:x] = 1
h[:y] = “2”
h[:z] = [1,2,3]
require “yaml”
mi_valor = h.to_yaml # Convierte el hash a formato yaml.

Espero te sirva.

Jaime Mora R.

On Jan 24, 2007, at 4:25 PM, Chika wrote:

ModificacionesEmpresa.create(:empresa_id =>@empresa.id, :usuario_id =>
session[:user_id],:tipo => ‘U’, :tupla_nuevo => params[:empresa].to_s,
:tupla_antiguo => @tupla)

Pero ni params[:empresa].to_s ni :tupla_antiguo =>
@tupla
quedaron guardados como informacion legible

Que contiene params[:empresa]?

– fxn

Alguien tiene una solución más inteligente?
Puedes guardarlos como xml

http://api.rubyonrails.org/classes/ActiveRecord/XmlSerialization.html#M000907

@empresa = Empresa.find(params[:id])

@datos_antiguos = @empresa.to_xml

@empresa.update_attributes params[:empresa]

@datos_nuevos = @empresa.to_xml

Un enfoque alternativo que estamos utilizando nosotros es sacar los
datos editables por el usuario de una empresa a un modelo distinto
llamado CompanyProfile. Una empresa ‘has_many’ company_profiles pero
solo uno activo, que son los datos actuales. De esta forma, los
profiles activos te sirven para las vistas y el resto como histórico
de cambios.


Manuel
http://linkja.com * un agregador de tendencias
http://simplelogica.net
simplelogica.net

No te vale con el plugin :acts_as_audited ???

http://www.opensoul.org/2006/7/21/acts_as_audited

Saludos
Roberto M. Oliva

-----Mensaje original-----
De: [email protected]
[mailto:[email protected]] En nombre de Chika
Enviado el: miércoles, 24 de enero de 2007 16:25
Para: [email protected]
Asunto: [Ror-es] Params/string

Hola, estoy desarrollando un administrador de base de datos y necesito
mantener un historial de los cambios realizados por los usuarios.
Esto significa que cada vez que accedo al metodo update, create o
destroy,
tengo que guardar cierta informacion en una tabla de historial, no hay
mayor
problema con eso. Con el problema con el que me encuentro es que
necesito
guardar los datos antiguos en un campo tipo string y los nuevos en otro
campo también de tipo string.
Intenté hacer los siguiente:

ModificacionesEmpresa.create(:empresa_id =>@empresa.id, :usuario_id =>
session[:user_id],:tipo => ‘U’, :tupla_nuevo => params[:empresa].to_s,
:tupla_antiguo => @tupla)

Pero ni params[:empresa].to_s ni :tupla_antiguo => @tupla quedaron
guardados
como informacion legible… creo que deberé inventar un método que me vaya
guardando la información en un gran string y ahi guardarlo,…mientras
estoy en eso, Alguien tiene una solución más inteligente?


Posted via http://www.ruby-forum.com/.


Ror-es mailing list
[email protected]

Interesante plugin Roberto, probablemente sea la solución que más se
ajuste a la necesidad de Chika.

Saludos.

Jaime Mora R.

Bueno, en un principio me sirvió la solucion de Manuel

@empresa = Empresa.find(params[:id])
@datos_antiguos = @empresa.to_xml
@empresa.update_attributes params[:empresa]
@datos_nuevos = @empresa.to_xml

el problema me surgió ahora que no sólo necesito guardar la informacion
de la empresa si no también la de las tablas relacionadas con ella, como
sucursales. Lo intenté con

@tupla_nueva = @empresa.to_xml(:include =>@sucursal)

pero no me incluyo nada, voy a probar el plugin de Roberto y les
cuento…

Saludos,
Chika