Module: Petergate::ActionController::Base::ClassMethods

Defined in:
lib/petergate/action_controller/base.rb

Instance Method Summary collapse

Instance Method Details

#access(rules = {}, &block) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/petergate/action_controller/base.rb', line 22

def access(rules = {}, &block)
  if block
    b_rules = block.call
    rules = rules.merge(b_rules) if b_rules.is_a?(Hash)
  end

  instance_eval do
    @_controller_rules = rules
    @_controller_message = rules.delete(:message)

    def controller_rules
      @_controller_rules
    end

    def controller_message
      @_controller_message
    end

    def inherited(subclass)
      subclass.instance_variable_set("@_controller_rules", instance_variable_get("@_controller_rules"))
    end
  end

  class_eval do
    def check_access
      permissions(self.class.controller_rules)
    end
  end
end

#all_actionsObject



14
15
16
# File 'lib/petergate/action_controller/base.rb', line 14

def all_actions
  ->{self.action_methods.to_a.map(&:to_sym) - [:check_access, :title]}.call
end

#const_missing(const_name) ⇒ Object



5
6
7
8
9
10
11
12
# File 'lib/petergate/action_controller/base.rb', line 5

def const_missing(const_name)
  if [:AllRest, :ALLREST].include?(const_name)
    warn "`AllRest` and `ALLREST` has been deprecated. Use :all instead."
    return ALLRESTDEP
  else
    return super 
  end
end

#except_actions(arr = []) ⇒ Object



18
19
20
# File 'lib/petergate/action_controller/base.rb', line 18

def except_actions(arr = [])
  all_actions - arr
end