Class: Decidim::ActionLogger
- Inherits:
 - 
      Object
      
        
- Object
 - Decidim::ActionLogger
 
 
- Defined in:
 - app/services/decidim/action_logger.rb
 
Overview
Use this class to log actions by any user. You probably should not use this class directly, but rather use ‘Decidim.traceability` instead. Check the docs on `Decidim::Traceability` for more info.
Usage:
ActionLogger.log(:create, user, new_proposal, extra_data)
  Class Method Summary collapse
- 
  
    
      .log(action, user, resource, version_id, resource_extra = {})  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Public: Logs the given ‘action` by the given `user` on the given `resource`.
 
Instance Method Summary collapse
- 
  
    
      #initialize(action, user, resource, version_id = nil, resource_extra = {})  ⇒ ActionLogger 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
Public: Initializes the instance.
 - 
  
    
      #log!  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Public: Logs the given ‘action` by the given `user` on the given `resource`.
 
Constructor Details
#initialize(action, user, resource, version_id = nil, resource_extra = {}) ⇒ ActionLogger
Public: Initializes the instance.
action - a String representing the name of the action user - the Decidim::User that performed the action resource - the resource on which the action was performed version_id - the ID of the ‘PaperTrail::Version` that was created on that action resource_extra - a Hash with resource_extra info to be recorded
      33 34 35 36 37 38 39 40  | 
    
      # File 'app/services/decidim/action_logger.rb', line 33 def initialize(action, user, resource, version_id = nil, resource_extra = {}) @action = action @user = user @resource = resource @version_id = version_id @resource_extra = resource_extra @visibility = resource_extra.delete(:visibility).presence || "admin-only" end  | 
  
Class Method Details
.log(action, user, resource, version_id, resource_extra = {}) ⇒ Object
Public: Logs the given ‘action` by the given `user` on the given `resource`. Delegates the work to the instance method.
action - a String representing the name of the action user - the Decidim::User that performed the action resource - the resource on which the action was performed version_id - the ID of the ‘PaperTrail::Version` that was created on that action resource_extra - a Hash with resource_extra info to be recorded
Returns the newly created ‘Decidim::ActionLog` resource.
      22 23 24  | 
    
      # File 'app/services/decidim/action_logger.rb', line 22 def self.log(action, user, resource, version_id, resource_extra = {}) new(action, user, resource, version_id, resource_extra).log! end  | 
  
Instance Method Details
#log! ⇒ Object
Public: Logs the given ‘action` by the given `user` on the given `resource`.
Returns the newly created ‘Decidim::ActionLog` resource.
      46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62  | 
    
      # File 'app/services/decidim/action_logger.rb', line 46 def log! Decidim::ActionLog.create!( user:, organization:, action:, resource:, resource_id: resource.id, resource_type: resource.class.name, participatory_space:, component:, area:, scope:, version_id:, extra: extra_data, visibility: ) end  |