0

私はこれの初心者なので、これを実装する方法をまだ理解できません。何人かが私を助けてくれて、audited を使わなければならないと言ってくれたので、そうしました。これは私のコントローラーです:

  def show

    add_breadcrumb 'Contract Bekijken', :contracten_path

    @contracten = Contracten.find(params[:id])

    @audits = @contracten.audits.collect { |a| a.created_at }

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @contracten }
    end
  end

これが私のコントローラー全体のペーストです。http://pastie.org/4270702

しかし、これが正しいかどうか、またはこれを私の見解に実装する方法がわかりません。

今週はこれが本当に必要なので、誰かが本当に助けてくれることを願っています。

ありがとう。


コントラクトをデータベースに保存できる Rails アプリがあり、データベースには個人と工場のテーブルもあります。最後に変更されたテーブルが必要です。

人々がデータベースに新しいレコードを更新/追加すると、スクリーンショットのdivに変更が表示されるようになります。

ありがとう

4

2 に答える 2

0

あなたの質問から、updated_atフィールドに基づくリストが必要なようです。

どうですか-@contract_list = Contract.all.order( "updated_at DESC").limit(10)

次に、ビュー内のリストを反復処理できます。

見栄えの良いページ!

于 2012-07-22T16:14:53.643 に答える
0

必要なのは、編集の監査履歴です。

そのモデルのActiveRecord コールバックにフックすることで、それを自分で実装できます (本当に自分で書きたいカスタム ビジネス ロジックが含まれている場合は意味があるかもしれません) 。

サンプル実装は次のようになります。

class Contract < ActiveRecord::Base
  after_save :audit

  def audit
    log = AuditLog.new(:user_id => current_user, :action => :update, ...)
    log.save
  end
end

これは、ログに記録したい適切なフィールドを含む AuditLog モデルがあり、監査メソッドでそれに書き込むことを前提としています。

または、より簡単な方法は、それを行うAudited gemを使用することです (ただし、いくつかの制限がある場合があります)。

Audited のドキュメントから、単純にContractレコードをフェッチauditsし、そのモデルで を使用して、監査済み情報にアクセスできるようです。

サンプル

def show
  @contract = Contract.find(params[:id])
  @audits = @contract.audits.collect { |a| a.created_at }
end

これで、監査のすべてのタイムスタンプが@audits変数に含まれ、 を使用してビューからアクセスできるようになりました<% @audits.each do ...

于 2012-07-02T08:25:34.090 に答える