2012-04-01 12 views
20

Uso paper_trail nei binari per tracciare le versioni dei miei modelli. Ma la documentazione sul repository github indica che la gemma non supporta le associazioni has_many, belongs_to.Come rettificare le versioni su has_many/belongs_to associazione con paper_trail

Diciamo che ho un app che registra gli amministratori delegati nomi di alcuni comapnies:

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

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

L'esempio sopra rappresentano le informazioni di ABC Inc.

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

Come posso implementare il seguente operazione così resetterà la società e i nomi del ceos della compagnia all'ultima versione?

+1

Avete aggiornamenti su questo? – Robin

+1

Ho anche lo stesso problema – eshaiju

risposta

1

Si potrebbe tentare di rimodellare l'associazione per rimuovere has_many perché nel caso di amministratori delegati, una società può avere_molti amministratori delegati attraverso la sua vita, ma ha solo_un amministratore delegato per un certo periodo.

L'implementazione di questo potrebbe essere un has_one a una tabella di join costituita dall'ID di entrambi CEO e società, nonché i periodi di tempo per cui era valida.

Un effetto collaterale vantaggioso sarebbe diventare banale se una persona fosse l'amministratore delegato di una società 2 volte con un altro amministratore delegato intermedio e traversata facilmente da quella nel dominio.

0

Le istruzioni su come gestire questo possono essere trovati nel README: https://github.com/airblade/paper_trail/blob/master/README.md#associations

Fondamentalmente sarà bisogno di creare una tabella version_associations, sia in fase di installazione con l'opzione rails generate paper_trail:install --with-associations o manualmente per far funzionare tutto questo.

Ti suggerisco di leggere la documentazione completa su Github per i dettagli su come funziona.

+0

Questo non risponde affatto alla domanda. Hai appena copiato e incollato le istruzioni scritte male su questo argomento. – dane

+0

@dane Forse puoi aiutare me e altri, modificando la domanda e chiarendo cosa è che l'OP sta chiedendo allora? –