Class: IronAdmin::ToolContext

Inherits:
Object
  • Object
show all
Defined in:
lib/iron_admin/tool_context.rb

Overview

Lightweight request context injected into Tool instances before action execution.

Provides tools with access to request params, the current user, and flash messages without coupling them to the controller.

Examples:

Accessing context in a tool action

class ReportTool < IronAdmin::Tool
  tool_action :generate

  def generate(ctx)
    user = ctx.current_user
    format = ctx.action_params(:format)[:format]
    ctx.flash[:notice] = "Report generated for #{user.name}"
  end
end

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params:, current_user:, flash:) ⇒ ToolContext

Returns a new instance of ToolContext.

Parameters:

  • params (ActionController::Parameters)
  • current_user (Object, nil)
  • flash (ActionDispatch::Flash::FlashHash)


32
33
34
35
36
# File 'lib/iron_admin/tool_context.rb', line 32

def initialize(params:, current_user:, flash:)
  @params = params
  @current_user = current_user
  @flash = flash
end

Instance Attribute Details

#current_userObject? (readonly)

Returns Current authenticated user.

Returns:

  • (Object, nil)

    Current authenticated user



24
25
26
# File 'lib/iron_admin/tool_context.rb', line 24

def current_user
  @current_user
end

#flashActionDispatch::Flash::FlashHash (readonly)

Returns Flash messages.

Returns:

  • (ActionDispatch::Flash::FlashHash)

    Flash messages



27
28
29
# File 'lib/iron_admin/tool_context.rb', line 27

def flash
  @flash
end

#paramsActionController::Parameters (readonly)

Returns Raw request params.

Returns:

  • (ActionController::Parameters)

    Raw request params



21
22
23
# File 'lib/iron_admin/tool_context.rb', line 21

def params
  @params
end

Instance Method Details

#action_params(*keys) ⇒ Hash

Extracts and permits only the specified keys from tool_action params.

Parameters:

  • keys (Array<Symbol>)

    Keys to permit

Returns:

  • (Hash)

    Permitted params as a symbolized hash



42
43
44
45
46
47
# File 'lib/iron_admin/tool_context.rb', line 42

def action_params(*keys)
  raw = params.fetch(:tool_action, {})
  return {} unless raw.respond_to?(:permit)

  raw.permit(*keys).to_h.symbolize_keys
end