Class: Guts::Ability

Inherits:
Object
  • Object
show all
Includes:
CanCan::Ability
Defined in:
app/models/guts/ability.rb

Overview

Ability class for CanCanCan

Instance Method Summary collapse

Constructor Details

#initialize(user) ⇒ Ability

Initializes the user’s abilities

Parameters:

  • user (Object|Nil)

    the user object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'app/models/guts/ability.rb', line 8

def initialize(user)
  user ||= Guts::User.new

  # Loop over group permissions first
  user.groups.each do |group|
    group.permissions.each do |permission|
      conditions = { id: permission.authorization.subject_id } unless permission.authorization.subject_id.nil?
      can(
        permission.authorization.action.to_sym,
        subject_class(permission.authorization.subject_class),
        conditions
      )
    end
  end

  # Next, loop over user permissions which can override group permissions
  user.permissions.each do |permission|
    conditions = { id: permission.authorization.subject_id } unless permission.authorization.subject_id.nil?
    can(
      permission.authorization.action.to_sym,
      subject_class(permission.authorization.subject_class),
      conditions
    )
  end
end