Paper Trail Gem を使用してモデルのデータへの変更を追跡する

ペーパー トレイルを使用すると、編集とバージョン管理の目的で、モデル データのすべての変更を追跡できます。この gem を使用すると、ライフサイクルのあらゆる段階でモデルがどのように見えるかを確認でき、モデル データの任意のバージョンに戻すことができ、レコードが破棄された後にすべての変更を元に戻すこともできます。完全に復元します。

宝石 「ペーパートレイル」 Bundle install を実行してインストールします

バンドルのインストール後、次のコマンドを実行してバージョン テーブルをデータベースに追加できます。

バンドル実行レール生成、paper_trail:install
バンドル実行 rake db:移行

追跡のためにモデルに has_paper_trail メソッドを追加します。

class Product < ActiveRecord::Base has_paper_trail end

current_user メソッドを使用している場合は、以下のコールバックによって特定の変更の責任者を追跡できます。

class ApplicationController before_action :set_paper_trail_whodunnit end


ペーパートレイルジェムの特徴

作成、更新、破棄など、モデル内で発生したすべての変更を保存します。
変更がない限り、更新は保存されません
実際のバージョンや一度破棄されたバージョンを含むすべてのバージョンを取得できます。

基本的な使い方

これで、特定のモデルのすべての変更を返す version メソッドが完成しました。

product = Product.find 2 製品.バージョン
# [, , ...]

vesrion に基づいて、モデルに発生した変更を見つけることができます

v = 製品.バージョン.最終

v.event # 更新/作成/破棄を返します
v.whodunnit #it はこれを実行したユーザー ID を返します
v. 製品をアップデート前と同じように再現する

previous_version メソッドと next_version メソッドを使用してバージョンを移動できます。

製品 = 製品.前のバージョン

product = product.next_version #it オブジェクトがない場合は nil を返します

product.versions.last.whodunnit #it は、特定の変更を行ったユーザーを返します

RailsCarma が提供している Ruby on Rails開発サービス 過去 8 年間にわたり、当社の開発者はあらゆる種類の作業に精通しています。 Ruby on Rails の Web 開発 仕事やあらゆる種類のプロジェクトの処理。弊社の開発スキルや対応可能なプロジェクトについて詳しく知りたい場合は、お問い合わせください。

関連記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

jaJapanese