class MarbleGate::Access
Attributes
context[R]
Public Class Methods
new(context, action, *args)
click to toggle source
# File lib/marble_gate/access.rb, line 13 def initialize(context, action, *args) @context, @action = context, action.to_sym @args = args end
Public Instance Methods
for_model?(model)
click to toggle source
# File lib/marble_gate/access.rb, line 18 def for_model?(model) return for_authorizer?(model) if model.is_a?(Class) obj = auth_class(model.class).new(model) obj.send(choose_action(obj), *@args) end
user()
click to toggle source
# File lib/marble_gate/access.rb, line 30 def user context.send(MarbleGate.current_user_method_name) end
Private Instance Methods
auth_class(model_class)
click to toggle source
# File lib/marble_gate/access.rb, line 36 def auth_class(model_class) return @auth_class if @auth_class _auth_class = "#{model_class.name}Authorizer" @auth_class = _auth_class.safe_constantize raise MarbleGate::MissingAuthorizer unless @auth_class %i(user context).each { |m| @auth_class.send("#{m}=", send(m)) } @auth_class.model_class = model_class @auth_class end
choose_action(auth)
click to toggle source
# File lib/marble_gate/access.rb, line 48 def choose_action(auth) return @action if auth.respond_to?(@action) new_action = MarbleGate.alias_map[@action] return new_action if new_action && auth.respond_to?(new_action) return :manage if auth.respond_to?(:manage) :default end