Class: CanPlay::ResourceOverride
- Inherits:
-
AbstractResource
- Object
- AbstractResource
- CanPlay::ResourceOverride
- Defined in:
- lib/can_play/resource.rb
Class Method Summary collapse
- .add_resource(group, verb, object, type, behavior, opts) ⇒ Object
- .inherited(base) ⇒ Object
- .limit(name = nil, &block) ⇒ Object
- .set_override_code(str) ⇒ Object
Methods inherited from AbstractResource
Methods included from ClassMethods
#add_resource, #collection, #group, #limit, #member
Class Method Details
.add_resource(group, verb, object, type, behavior, opts) ⇒ Object
134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
# File 'lib/can_play/resource.rb', line 134 def self.add_resource(group, verb, object, type, behavior, opts) code = self.uniq_override_code super(group, verb, object, type, behavior, opts) and return if code.blank? name = "#{verb}_#{group.name}" resource = ResourcePermission.new( my_module_name: my_module_name, name: name, group: group, verb: verb, object: object, type: type, behavior: behavior, opts: opts ) CanPlay.override_resources[code] ||= [] CanPlay.override_resources[code].keep_if { |i| i.name != name } CanPlay.override_resources[code] << resource end |
.inherited(base) ⇒ Object
121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/can_play/resource.rb', line 121 def self.inherited(base) super base.class_eval do raise 'class name set error' unless base.name.end_with?('ResourceOverride') clazz_name = base.name.gsub(/ResourceOverride$/, '') clazz = clazz_name.constantize rescue nil singleton_attr_accessor :current_group, :temp_current_group if clazz && clazz.is_a?(Module) base.group clazz end end end |
.limit(name = nil, &block) ⇒ Object
153 154 155 156 157 158 159 160 161 |
# File 'lib/can_play/resource.rb', line 153 def self.limit(name=nil, &block) clazz = self wrap_block = Proc.new do |*args| clazz::OnlyInstance.only.instance_exec(*args, &block) end method_name = name ? "#{name}_evaluate_in_#{code}_scope" : "#{current_group.name}_evaluate_in_#{self.uniq_override_code}_scope" CanPlay::Power.power(method_name, &wrap_block) end |
.set_override_code(str) ⇒ Object
115 116 117 |
# File 'lib/can_play/resource.rb', line 115 def self.set_override_code(str) self.uniq_override_code = str end |