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