discourse/plugins/chat/app/policies/policy_base.rb
Loïc Guitaut 0733dda1cb DEV: Add policy objects to services
This patch introduces policy objects to chat services. It allows putting
more complex logic in a dedicated class, which will make services
thinner. It also allows providing a reason why the policy failed.

Some change has been made to the service runner too to use more easily
these new policy objects: when matching a failing policy (or any failing
step actually), the result object is now provided to the block. This
way, instead of having to access the reason why the policy failed by
doing `result["result.policy.policy_name"].reason` inside the block,
this one can be simply written like this:
```ruby
  on_failed_policy(:policy_name) { |policy| policy.reason }
```
2023-05-25 12:34:00 +02:00

20 lines
261 B
Ruby

# frozen_string_literal: true
class PolicyBase
attr_reader :context
delegate :guardian, to: :context
def initialize(context)
@context = context
end
def call
raise "Not implemented"
end
def reason
raise "Not implemented"
end
end