Historial de actividad con la gema auditada de Rails

Tengo la aplicación Rails 3 con algunos modelos, como Producto y Usuario. Estoy usando una gema "auditada" para realizar un seguimiento de los cambios de los productos, es un trabajo simple y agradable.

Pero quiero hacer una página especial donde quiero poner el historial de actividad diaria. Necesito algo como Audits.all.order ("created_at") para el primer paso, pero no existe tal modelo.

Pregunta: ¿Cómo puedo obtener todas las auditorías de hoy para todos los modelos?

preguntado el 12 de junio de 12 a las 11:06

3 Respuestas

Creo que deberías consultar como Audited::Adapters::ActiveRecord::Audit.where("created_at >= ?", Date.today) de acuerdo con la estructura de gema

Respondido el 12 de junio de 12 a las 12:06

Puede acortarse a: Audited.audit_class.where("created_at >= ?", Date.today) - Eliot Sykes

Para poder acceder a las auditorías de hoy con:

@audits = Audit.today

Crear una audit.rb archivo en app/models/ me gusta:

Audit = Audited.audit_class

class Audit
  scope :today, -> do
    where("created_at >= ?", Time.zone.today.midnight).reorder(:created_at)
  end
end

Audited también proporciona algunos ámbitos con nombre propio que puede resultar útil:

scope :descending,    ->{ reorder("version DESC") }
scope :creates,       ->{ where({:action => 'create'}) }
scope :updates,       ->{ where({:action => 'update'}) }
scope :destroys,      ->{ where({:action => 'destroy'}) }

scope :up_until,      ->(date_or_time){ where("created_at <= ?", date_or_time) }
scope :from_version,  ->(version){ where(['version >= ?', version]) }
scope :to_version,    ->(version){ where(['version <= ?', version]) }
scope :auditable_finder, ->(auditable_id, auditable_type){ where(auditable_id: auditable_id, auditable_type: auditable_type) }

Respondido el 30 de diciembre de 15 a las 07:12

mi solución es simplemente extender el objeto de auditoría, por ejemplo

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)

Respondido el 19 de junio de 12 a las 15:06

alguien me puede ayudar con las vistas? No sé cómo mostrarlo en mis vistas. Estoy usando Rails 3.2.6 con la última joya auditada de ActiveRecord. - Kees Sonnema

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.