2012-04-01 7 views
20

Ich benutze paper_trail in Schienen, um meine Modelle Versionen zu verfolgen. Aber die Dokumentation auf dem GitHub Repo zeigt an, dass der Edelstein has_many, belongs_to Assoziationen nicht unterstützt.Wie behebt man Versionen auf has_many/gehört zu_zu_Verbindung mit paper_trail

Lasst uns sagen, ich habe eine Anwendung, die die ceos Namen einiger comapnies Datensätze:

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

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

Das obige Beispiel die Informationen von ABC Inc.

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

darstellen Wie kann ich implementieren die folgenden Operation so wird es die Firma und die ceos Namen des Unternehmens auf die letzte Version zurücksetzen?

+1

Haben Sie ein Update dazu? – Robin

+1

Ich habe auch das gleiche Problem – eshaiju

Antwort

1

Sie könnten versuchen, die Assoziation neu zu modellieren, um die has_many zu entfernen, denn im Fall von CEOs kann ein Unternehmen viele CEOs durch sein Leben haben, aber es hat nur einen CEO für eine bestimmte Zeit.

Die Implementierung könnte ein has_one für eine Join-Tabelle sein, die aus der ID des CEO und des Unternehmens und den Zeiträumen besteht, für die es gültig war.

Ein nützlicher Nebeneffekt ist es trivial zu werden, eine Person CEO eines Unternehmens 2 Mal mit einem anderen CEO zwischendurch zu haben und leicht in der Domäne zu traversieren.

0

Die Anweisungen, wie dies umgehen kann in der Readme zu finden: https://github.com/airblade/paper_trail/blob/master/README.md#associations

Grundsätzlich müssen eine version_associations Tabelle, entweder bei der Installation mit der rails generate paper_trail:install --with-associations Option oder manuell für diese arbeiten erstellen.

Ich empfehle Ihnen, die vollständige Dokumentation auf Github für Details zu lesen, wie das funktioniert.

+0

Dies beantwortet die Frage überhaupt nicht. Sie haben nur die schlecht geschriebenen Anweisungen zu diesem Thema kopiert und eingefügt. – dane

+0

@dane Vielleicht können Sie mir und anderen helfen, indem Sie die Frage bearbeiten und klarer machen, wonach das OP fragt? –

Verwandte Themen