36 lines
1.0 KiB
Ruby
36 lines
1.0 KiB
Ruby
|
class EventLog < ActiveRecord::Base
|
||
|
belongs_to :user
|
||
|
belongs_to :object, :polymorphic => true
|
||
|
|
||
|
# self.per_page = 1
|
||
|
|
||
|
scope :eager_loading, preload(:user)
|
||
|
scope :default_order, order('id DESC') # order('created_at DESC')
|
||
|
|
||
|
before_create do
|
||
|
self.user_name = user.try(:nickname) || 'guest'
|
||
|
self.object_name ||= object.name if object.respond_to?(:name)
|
||
|
end
|
||
|
# after_create { self.class.current_controller = nil }
|
||
|
|
||
|
class << self
|
||
|
def create_with_current_controller(attributes)
|
||
|
create(attributes) do |el|
|
||
|
el.user = current_controller.current_user
|
||
|
el.ip = current_controller.request.remote_ip
|
||
|
el.protocol = 'web' # TODO pass protocol through controller or calculate by name
|
||
|
el.controller = current_controller.class.to_s
|
||
|
el.action = current_controller.action_name
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def current_controller
|
||
|
Thread.current[:current_controller]
|
||
|
end
|
||
|
|
||
|
def current_controller=(ctrl)
|
||
|
Thread.current[:current_controller] = ctrl
|
||
|
end
|
||
|
end
|
||
|
end
|