2012-04-01 7 views
20

Utilizo paper_trail en rieles para rastrear las versiones de mis modelos. Pero la documentación del repositorio de Github indica que la gema no es compatible con las asociaciones has_many, belongs_to.Cómo rectificar versiones en has_many/belongs_to association with paper_trail

Digamos que he una aplicación que registra los nombres de directores generales de algunas comapnies:

class Company < ActiveRecord::Base 
    has_many :ceos 
    has_paper_trail 
end 

class Ceo < ActiveRecord::Base 
    belongs_to :companies 
    has_paper_trail 
end 

El ejemplo anterior representar la información de ABC Inc.

company.name => "ABC" 
company.ceo.past => "John Henry" 
company.ceo.present => "Amy Warren" 

¿Cómo puedo aplicar la siguiente operación por lo que restablecerá la compañía y los nombres ceos de la compañía a la última versión?

+1

¿Tiene alguna actualización sobre esto? – Robin

+1

También tengo el mismo problema – eshaiju

Respuesta

1

Puede intentar modelar la asociación para eliminar el has_many porque en el caso de los CEOs, una compañía puede tener_muchos CEOs a lo largo de su vida, pero solo tiene_un CEO por un cierto período.

La implementación de esto podría ser una tabla de has_one a una combinación formada por la ID del CEO y la Compañía, y los períodos de tiempo para los que era válida.

Un efecto secundario beneficioso es que sería trivial tener a una persona como CEO de una empresa 2 veces con otro CEO en el medio y tener un fácil cruce de eso en el dominio.

0

Las instrucciones de cómo manejar esto se pueden encontrar en el README: https://github.com/airblade/paper_trail/blob/master/README.md#associations

Básicamente, tendrá que crear una tabla version_associations, ya sea en el momento de la instalación con la opción rails generate paper_trail:install --with-associations o manualmente para que esto funcione.

Le sugiero que lea la documentación completa sobre Github para obtener detalles sobre cómo funciona esto.

+0

Esto no responde la pregunta en absoluto. Acabas de copiar y pegar las instrucciones mal escritas sobre este tema. – dane

+0

@dane Quizás pueda ayudarme, y a otros, editando la pregunta y aclarando qué es lo que el OP está pidiendo en ese momento. –

Cuestiones relacionadas