Class: InertiaRails::ActionFilter

Inherits:
Object
  • Object
show all
Defined in:
lib/inertia_rails/action_filter.rb

Instance Method Summary collapse

Constructor Details

#initialize(conditional_key, actions) ⇒ ActionFilter

Returns a new instance of ActionFilter.



7
8
9
10
# File 'lib/inertia_rails/action_filter.rb', line 7

def initialize(conditional_key, actions)
  @conditional_key = conditional_key
  @actions = Array(actions).map(&:to_s).to_set
end

Instance Method Details

#match?(controller) ⇒ Boolean

Returns:

  • (Boolean)


12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/inertia_rails/action_filter.rb', line 12

def match?(controller)
  missing_action = @actions.find { |action| !controller.available_action?(action) }
  if missing_action
    message = <<~MSG
      The #{missing_action} action could not be found for the :inertia_share
      callback on #{controller.class.name}, but it is listed in the controller's
      #{@conditional_key.inspect} option.
    MSG

    raise AbstractController::ActionNotFound.new(message, controller, missing_action)
  end

  @actions.include?(controller.action_name)
end