2012-06-12 3 views
4

У меня есть приложение для рельсов 3 с некоторыми моделями, такими как Product и User. Я использую «проверенный» камень для отслеживания изменений для продуктов, это просто и приятно работать.История активности с проверенной жемчужиной Rails

Но я хочу создать специальную страницу, где я хочу разместить ежедневную историю деятельности. Мне нужно что-то вроде Audits.all.order ("created_at") для первого шага, но такой модели нет.

Вопрос: Как я могу получить все проверки на сегодня для всех моделей?

ответ

6

Я думаю, вы должны запросить как Audited::Adapters::ActiveRecord::Audit.where("created_at >= ?", Date.today) согласно gem structure

+4

Может быть сокращено до: 'Audited.audit_class.where (" created_at> =? ", Date.today)' –

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) 
+0

может кто-нибудь помочь мне с представлениями? я не знаю, как показать это в моих взглядах. Я использую рельсы 3.2.6 с последней проверенной жемчужиной activerecord. –

2

Чтобы иметь возможность доступа к современным аудиты с:

@audits = Audit.today 

Создать audit.rb файл в app/models/ как:

Audit = Audited.audit_class 

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

Audited also provides a few named scopes of its own, которые могут оказаться полезными:

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) } 
Смежные вопросы