Module: RoleFu::Adapters::CanCanCan

Defined in:
lib/role_fu/adapters/cancancan.rb

Instance Method Summary collapse

Instance Method Details

#role_fu_load_permissions!(user) ⇒ Object

Mixin for CanCan::Ability class



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/role_fu/adapters/cancancan.rb', line 7

def role_fu_load_permissions!(user)
  return unless user.respond_to?(:role_fu_permissions)

  user.role_fu_permissions.each do |action|
    # Action format: "posts.update" (resource.action) or "manage_all"
    parts = action.split(".")

    if parts.size == 2
      subject_name, rule = parts
      begin
        subject_class = subject_name.classify.constantize
        can rule.to_sym, subject_class
      rescue NameError
        can rule.to_sym, subject_name.to_sym
      end
    else
      can action.to_sym, :all
    end
  end
end