Module: RoleAuthorization::Ruleset::ClassMethods

Defined in:
lib/role_authorization/controller/ruleset.rb

Instance Method Summary collapse

Instance Method Details

#cattr_ruleset(*syms) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/role_authorization/controller/ruleset.rb', line 9

def cattr_ruleset(*syms)
  syms.each do |sym|
    class_eval(<<-EOS, __FILE__, __LINE__ + 1)
      def self.#{sym}
        @@#{sym} ||= Hash.new
        @@#{sym}
      end

      def self.#{sym}=(obj)
        @@#{sym} ||= Hash.new
        @@#{sym} = obj
      end

      def self.add_to_#{sym}(name, set = nil, &block)
        ruleset = self.#{sym}
        if block_given?
          ruleset[name] = RoleAuthorization::Mapper.new
          ruleset[name].instance_eval(&block)
        elsif !set.nil?
          ruleset[name] = set
        end
        self.#{sym} = ruleset
      end
    EOS
  end
end