Class: Consent::Ability

Inherits:
Object
  • Object
show all
Includes:
CanCan::Ability
Defined in:
lib/consent/ability.rb

Overview

Defines a CanCan(Can)::Ability class based on a permissions hash

Instance Method Summary collapse

Constructor Details

#initialize(*args, apply_defaults: true) ⇒ Ability

Returns a new instance of Ability.



8
9
10
11
# File 'lib/consent/ability.rb', line 8

def initialize(*args, apply_defaults: true)
  @context = *args
  apply_defaults! if apply_defaults
end

Instance Method Details



13
14
15
16
17
18
19
20
21
22
# File 'lib/consent/ability.rb', line 13

def consent(permission: nil, subject: nil, action: nil, view: nil)
  permission ||= Permission.new(subject, action, view)
  return unless permission.valid?

  can(
    permission.action_key, permission.subject_key,
    permission.conditions(*@context),
    &permission.object_conditions(*@context)
  )
end