5

製品やユーザーなど、いくつかのモデルを備えた Rails 3 アプリケーションがあります。私は製品の変更を追跡するために「監査済み」の宝石を使用しています。これはシンプルでうまく機能しています。

でも、毎日の活動履歴を載せたい特設ページを作りたい。最初のステップで Audits.all.order("created_at") のようなものが必要ですが、そのようなモデルはありません。

質問: すべてのモデルについて、今日のすべての監査を取得するにはどうすればよいですか?

4

3 に答える 3

6

gem の構造Audited::Adapters::ActiveRecord::Audit.where("created_at >= ?", Date.today)に合わせてクエリを実行する必要があると思います

于 2012-06-12T11:07:52.857 に答える
1

私の解決策は、単純に監査オブジェクトを拡張することです。

cat lib/audit_extensions.rb
# The audit class is part of audited plugin
# we reopen here to add search functionality
require 'audited'

module AuditExtentions
  def self.included(base)
    base.send :include, InstanceMethods
    base.class_eval do
      belongs_to :search_users, :class_name => 'User', :foreign_key => :user_id
      scoped_search :on => :username, :complete_value => true
      scoped_search :on => :audited_changes, :rename => 'changes'
      scoped_search :on => :created_at, :complete_value => true, :rename => :time, :default_order => :desc
      scoped_search :on => :action, :complete_value => { :create => 'create', :update => 'update', :delete => 'destroy' }
      before_save :ensure_username

    end
  end

  module InstanceMethods
    private

    def ensure_username
      self.username ||= User.current.to_s rescue ""
    end

  end
end

Audit = Audited.audit_class
Audit.send(:include, AuditExtentions)
于 2012-06-19T14:53:21.683 に答える