Module: PunditImplications::ClassMethods

Defined in:
lib/pundit_implications.rb

Instance Method Summary collapse

Instance Method Details

#define_implications(implications) ⇒ Object

Defines the implication graph and constructs query functions for all permissions by monkey-patching



26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/pundit_implications.rb', line 26

def define_implications(implications)
  @_implications ||= {}
  @_implications.merge!(implications) {|k,v1,v2| v1 | v2}
  transitive = transitive_hull(@_implications)
  transitive.each_key do |key|
    define_method(key.to_s + '?') {granted_list.include?(key)}
  end

  define_method('implied_permissions') {|initial|
    transitive.has_key?(initial) ? transitive[initial] : []}

  define_method('all_permissions') {transitive.keys.sort}
end