module HALPresenter::Policy::DSL
Attributes
current_user[R]
options[R]
resource[R]
Public Class Methods
included(mod)
click to toggle source
# File lib/hal_presenter/policy/dsl.rb, line 43 def self.included(mod) mod.extend(ClassMethods) end
new(current_user, resource, options = {})
click to toggle source
# File lib/hal_presenter/policy/dsl.rb, line 47 def initialize(current_user, resource, options = {}) @current_user = current_user @resource = resource @options = options end
Public Instance Methods
attribute?(name)
click to toggle source
# File lib/hal_presenter/policy/dsl.rb, line 53 def attribute?(name) __check __rules.attribute_rule_for(name) end
embed?(name)
click to toggle source
# File lib/hal_presenter/policy/dsl.rb, line 62 def embed?(name) __check __rules.embed_rule_for(name) end
link?(rel)
click to toggle source
# File lib/hal_presenter/policy/dsl.rb, line 57 def link?(rel) return true if rel == :self __check __rules.link_rule_for(rel) end
Private Instance Methods
__check(block)
click to toggle source
# File lib/hal_presenter/policy/dsl.rb, line 95 def __check(block) !!instance_eval(&block) end
__rules()
click to toggle source
# File lib/hal_presenter/policy/dsl.rb, line 91 def __rules self.class.rules end
delegate_attribute(policy_class, attr, **opts)
click to toggle source
# File lib/hal_presenter/policy/dsl.rb, line 70 def delegate_attribute(policy_class, attr, **opts) delegate_to(policy_class, :attribute?, args: attr, **opts) end
delegate_embed(policy_class, rel, **opts)
click to toggle source
# File lib/hal_presenter/policy/dsl.rb, line 78 def delegate_embed(policy_class, rel, **opts) delegate_to(policy_class, :embed?, args: rel, **opts) end
delegate_link(policy_class, rel, **opts)
click to toggle source
# File lib/hal_presenter/policy/dsl.rb, line 74 def delegate_link(policy_class, rel, **opts) delegate_to(policy_class, :link?, args: rel, **opts) end
delegate_to(policy_class, method, resource: nil, args: nil, **opts)
click to toggle source
# File lib/hal_presenter/policy/dsl.rb, line 82 def delegate_to(policy_class, method, resource: nil, args: nil, **opts) resource ||= send(:resource) opts = options.merge(opts) policy = policy_class.new(current_user, resource, opts) args = Array(args) args.unshift(method) policy.send(*args) end