class Paradocs::BasePolicy

Attributes

environment[RW]

Public Class Methods

build(name, meth, &block) click to toggle source
# File lib/paradocs/base_policy.rb, line 3
def self.build(name, meth, &block)
  klass = Class.new(self)
  klass.public_send(meth, &block)
  klass.policy_name = name
  klass
end
coerce(&coerce_block) click to toggle source
# File lib/paradocs/base_policy.rb, line 20
def self.coerce(&coerce_block)
  @coerce_block = coerce_block if block_given?
  @coerce_block
end
eligible(&block) click to toggle source
# File lib/paradocs/base_policy.rb, line 25
def self.eligible(&block)
  @eligible_block = block if block_given?
  @eligible_block
end
message(&block) click to toggle source
# File lib/paradocs/base_policy.rb, line 10
def self.message(&block)
  @message_block = block if block_given?
  @message_block
end
meta_data(&block) click to toggle source
# File lib/paradocs/base_policy.rb, line 30
def self.meta_data(&block)
  @meta_data_block = block if block_given?
  @meta_data_block
end
new(*args) click to toggle source
# File lib/paradocs/base_policy.rb, line 71
def initialize(*args)
  @init_params = args
end
policy_name() click to toggle source
# File lib/paradocs/base_policy.rb, line 66
def self.policy_name
  @policy_name || self.name.split("::").last.downcase.to_sym
end
policy_name=(name) click to toggle source
# File lib/paradocs/base_policy.rb, line 62
def self.policy_name=(name)
  @policy_name = name
end
validate(&validate_block) click to toggle source
# File lib/paradocs/base_policy.rb, line 15
def self.validate(&validate_block)
  @validate_block = validate_block if block_given?
  @validate_block
end

Public Instance Methods

coerce(value, key, context) click to toggle source
# File lib/paradocs/base_policy.rb, line 80
def coerce(value, key, context)
  (self.class.coerce || ->(v, *_) { v }).call(value, key, context)
end
eligible?(value, key, payload) click to toggle source
# File lib/paradocs/base_policy.rb, line 75
def eligible?(value, key, payload)
  args = (init_params + [value, key, payload])
  (self.class.eligible || ->(*) { true }).call(*args)
end
message() click to toggle source
# File lib/paradocs/base_policy.rb, line 103
def message
  @message ||= 'is invalid'
end
meta_data() click to toggle source
# File lib/paradocs/base_policy.rb, line 90
def meta_data
  return self.class.meta_data.call(*init_params) if self.class.meta_data
  meta
end
policy_name() click to toggle source
# File lib/paradocs/base_policy.rb, line 99
def policy_name
  (self.class.policy_name || self.to_s.demodulize.underscore).to_sym
end
valid?(value, key, payload) click to toggle source
# File lib/paradocs/base_policy.rb, line 84
def valid?(value, key, payload)
  args = (init_params + [value, key, payload])
  @message = self.class.message.call(*args) if self.class.message
  validate(*args)
end
validate(*args) click to toggle source
# File lib/paradocs/base_policy.rb, line 95
def validate(*args)
  (self.class.validate || ->(*) { true }).call(*args)
end

Private Instance Methods

init_params() click to toggle source
# File lib/paradocs/base_policy.rb, line 119
def init_params
  @init_params ||= [] # safe default if #initialize was overwritten
end
meta() click to toggle source
# File lib/paradocs/base_policy.rb, line 115
def meta
  @meta = {self.class.policy_name => {errors: self.class.errors}}
end