1

特定のモデルでユーザーのCRUD操作を可能にする管理インターフェイスを備えたRailsアプリケーションがあります。クライアントは、各モデルに対してどのユーザーが何をしたかをログに記録する方法を望んでいます。たとえば、ユーザーが顧客を削除するなどです。彼は、誰がその顧客を削除/更新/作成したかを追跡したいと考えています。私はこれを処理するための最良の方法を考えています。すでにこれを行っている宝石がそこにあるかどうかも興味があります。

これが私の考えです。

  1. 各モデルにcreated_byフィールドとupdated_byフィールドを含めることができます。問題はdeleted_byの追跡です。1つの方法は、実際のレコードを削除するのではなく、顧客を非アクティブとしてマークすることです。面倒なようで、追跡したいすべてのモデルで多くの繰り返しがあります。
  2. 次のフィールドを追跡するevent_historyモデルを作成できます(下のクラス図)。model_record_dataフィールドは、配列またはオブジェクトとして格納できますか?オブジェクトをmysqlフィールドにテキストとして保存できますか?このメソッドの利点は、このモデルを呼び出して、将来作成する任意のモデルのアクションを保存できることです。さらに、誰かがミスをした場合、レコードを以前の状態に復元できます。

    event_history ->
      model_name
      model_record_data
      action             #create/update/delete etc
      action_date        #datetime
      user_id
    

私はこれに関するいくつかのフィードバックをいただければ幸いです、そしてあなたの助けをいただければ幸いです。

4

1 に答える 1

3

この宝石を見てください(audited)。私はそれが求めていることをしていると信じています。

https://github.com/collectiveidea/audited

于 2012-07-19T14:40:36.867 に答える