Module: ActionPolicy::Policy::PreCheck::ClassMethods
- Defined in:
- lib/action_policy/policy/pre_check.rb
Overview
:nodoc:
Instance Method Summary collapse
- #pre_check(*names, **options) ⇒ Object
- #pre_checks ⇒ Object
- #skip_pre_check(*names, **options) ⇒ Object
Instance Method Details
#pre_check(*names, **options) ⇒ Object
127 128 129 130 131 132 133 134 135 |
# File 'lib/action_policy/policy/pre_check.rb', line 127 def pre_check(*names, **) names.each do |name| # do not allow pre-check override check = pre_checks.find { _1.name == name } raise "Pre-check already defined: #{name}" unless check.nil? pre_checks << Check.new(self, name, **) end end |
#pre_checks ⇒ Object
150 151 152 153 154 155 156 157 158 |
# File 'lib/action_policy/policy/pre_check.rb', line 150 def pre_checks return @pre_checks if instance_variable_defined?(:@pre_checks) @pre_checks = if superclass.respond_to?(:pre_checks) superclass.pre_checks.dup else [] end end |
#skip_pre_check(*names, **options) ⇒ Object
137 138 139 140 141 142 143 144 145 146 147 148 |
# File 'lib/action_policy/policy/pre_check.rb', line 137 def skip_pre_check(*names, **) names.each do |name| check = pre_checks.find { _1.name == name } raise "Pre-check not found: #{name}" if check.nil? # when no options provided we remove this check completely next pre_checks.delete(check) if .empty? # otherwise duplicate and apply skip options pre_checks[pre_checks.index(check)] = check.dup.tap { _1.skip!(**) } end end |