module Seven::Abilities
Attributes
current_user[R]
target[R]
Public Class Methods
included(cls)
click to toggle source
# File lib/seven/abilities.rb, line 13 def included(cls) cls.extend(ClassMethods) end
new(current_user, target)
click to toggle source
# File lib/seven/abilities.rb, line 21 def initialize(current_user, target) @current_user = current_user @target = target @abilities = nil end
wrap_proc(rule_proc)
click to toggle source
# File lib/seven/abilities.rb, line 4 def wrap_proc(rule_proc) return unless rule_proc Class.new do include Seven::Abilities abilities(&rule_proc) end end
Public Instance Methods
abilities()
click to toggle source
# 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)
click to toggle source
# File lib/seven/abilities.rb, line 39 def can(*some_abilities) @abilities.push(*some_abilities.map(&:to_sym)) end
cannot(*some_abilities)
click to toggle source
# 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