Module: Seven::Abilities
- Defined in:
- lib/seven/abilities.rb
Defined Under Namespace
Modules: ClassMethods
Instance Attribute Summary collapse
-
#current_user ⇒ Object
readonly
Returns the value of attribute current_user.
-
#target ⇒ Object
readonly
Returns the value of attribute target.
Class Method Summary collapse
Instance Method Summary collapse
- #abilities ⇒ Object
- #can(*some_abilities) ⇒ Object
- #cannot(*some_abilities) ⇒ Object
- #initialize(current_user, target) ⇒ Object
Instance Attribute Details
#current_user ⇒ Object (readonly)
Returns the value of attribute current_user.
19 20 21 |
# File 'lib/seven/abilities.rb', line 19 def current_user @current_user end |
#target ⇒ Object (readonly)
Returns the value of attribute target.
19 20 21 |
# File 'lib/seven/abilities.rb', line 19 def target @target end |
Class Method Details
.included(cls) ⇒ Object
13 14 15 |
# File 'lib/seven/abilities.rb', line 13 def included(cls) cls.extend(ClassMethods) end |
Instance Method Details
#abilities ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/seven/abilities.rb', line 27 def abilities return @abilities if @abilities @abilities = [] self.class.rule_procs.each do |checker, rule_proc| next if checker && (current_user.nil? || !instance_eval(&checker)) instance_eval(&rule_proc) end @abilities end |
#can(*some_abilities) ⇒ Object
39 40 41 |
# File 'lib/seven/abilities.rb', line 39 def can(*some_abilities) @abilities.push(*some_abilities.map(&:to_sym)) end |
#cannot(*some_abilities) ⇒ Object
43 44 45 46 |
# File 'lib/seven/abilities.rb', line 43 def cannot(*some_abilities) symtax_abilities = some_abilities.map(&:to_sym) @abilities.delete_if {|ability| symtax_abilities.include?(ability) } end |
#initialize(current_user, target) ⇒ Object
21 22 23 24 25 |
# File 'lib/seven/abilities.rb', line 21 def initialize(current_user, target) @current_user = current_user @target = target @abilities = nil end |