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 |