2012-04-01 14 views
20

私はモデルのバージョンを追跡するために、railでpaper_trailを使用しています。しかし、githubリポジトリのドキュメントは、この宝石がhas_many,belongs_toの関連付けをサポートしていないことを示しています。has_many/belongs_toのバージョンを修正する方法paper_trailとの関連

のは、私はいくつかのcomapniesの最高経営責任者名を記録アプリをきたとしましょう:

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

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

上記の例では、ABC社の情報を表す

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

私は次のように実装することができますどのようにそれが会社と会社のCEO名を最後のバージョンにリセットするでしょうか?

+1

これに関する最新情報はありますか? – Robin

+1

私も同じ問題があります – eshaiju

答えて

1

CEOの場合、会社の人生に何人かのCEOがいるかもしれないが、特定の期間has_one CEOしかないので、has_manyを削除するために関連付けを再モデルすることができます。

これの実装は、CEOと会社の両方のIDとそれが有効であった期間で構成される参加テーブルに対してhas_oneであるかもしれません。

有益な副作用は、ある人物を企業のCEOにして、別のCEOを2回連れて、そのドメイン内を簡単に横断できるようにすることは簡単です。

0

これを処理する方法に関する指示は、READMEに記載されています。https://github.com/airblade/paper_trail/blob/master/README.md#associations

は、基本的にこれが機能するためにrails generate paper_trail:install --with-associationsオプションを使用して、インストール時または手動のどちらか、version_associationsテーブルを作成する必要があります。

この方法の詳細については、Githubの全マニュアルをお読みください。

+0

これは全く質問に答えません。あなたは、このトピックに関する不適切な記述をコピーして貼り付けただけです。 – dane

+0

@dane質問を編集して、OPが求めていることをより明確にすることで、他の人を助けることができますか? –

関連する問題