Class: AbstractController::Callbacks::ActionFilter
- Inherits:
-
Object
- Object
- AbstractController::Callbacks::ActionFilter
- Defined in:
- lib/abstract_controller/callbacks.rb
Overview
:nodoc:
Instance Method Summary collapse
-
#initialize(filters, conditional_key, actions) ⇒ ActionFilter
constructor
A new instance of ActionFilter.
- #match?(controller) ⇒ Boolean (also: #after, #before, #around)
Constructor Details
#initialize(filters, conditional_key, actions) ⇒ ActionFilter
Returns a new instance of ActionFilter.
40 41 42 43 44 |
# File 'lib/abstract_controller/callbacks.rb', line 40 def initialize(filters, conditional_key, actions) @filters = filters.to_a @conditional_key = conditional_key @actions = Array(actions).map(&:to_s).to_set end |
Instance Method Details
#match?(controller) ⇒ Boolean Also known as: after, before, around
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/abstract_controller/callbacks.rb', line 46 def match?(controller) if controller.raise_on_missing_callback_actions missing_action = @actions.find { |action| !controller.available_action?(action) } if missing_action filter_names = @filters.length == 1 ? @filters.first.inspect : @filters.inspect = <<~MSG The #{missing_action} action could not be found for the #{filter_names} callback on #{controller.class.name}, but it is listed in the controller's #{@conditional_key.inspect} option. Raising for missing callback actions is a new default in Rails 7.1, if you'd like to turn this off you can delete the option from the environment configurations or set `config.action_pack.raise_on_missing_callback_actions` to `false`. MSG raise ActionNotFound.new(, controller, missing_action) end end @actions.include?(controller.action_name) end |