Class: Gexp::Handler::Check::Resources
- Inherits:
-
Gexp::Handler::Check
- Object
- Gexp::Handler
- Gexp::Handler::Check
- Gexp::Handler::Check::Resources
- Defined in:
- lib/gexp/handler/check/resources.rb
Instance Attribute Summary
Attributes inherited from Gexp::Handler
#object, #objects, #params, #user
Instance Method Summary collapse
Methods inherited from Gexp::Handler
Constructor Details
This class inherits a constructor from Gexp::Handler
Instance Method Details
#chain_resource(resource, object = nil, params = nil) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/gexp/handler/check/resources.rb', line 6 def chain_resource(resource, object = nil, params = nil) if resource.is_a?(Array) # Если цепочка как массив curr_field = resource.shift if object # Если уже был получен результат if resource.count.zero? # Если последний метод в цепочке if params # Если сеттер object.send(curr_field, params) # last else # Если геттер object.send(curr_field) end else # Если не последний метод в цепочке access_resource_get(resource, object.send(curr_field), params) end else # Если метод еще не было вызовов access_resource_get(resource, @user.send(curr_field), params) end else # Если цепочка как строка access_resource_get(resource.split('.'), object, params) end end |
#process(params, &block) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/gexp/handler/check/resources.rb', line 29 def process(params, &block) compairs = params.map do |resource, value| if @user.respond_to?(resource) current = @user.send(resource.to_s.split('.').last) [ current >= value, current, value, resource ] end end compairs.compact! results = compairs.map(&:first).all? if block_given? block.call(compairs) if results else unless results resources = compairs.reject(&:first).map(&:fourth) raise Exception.new("out_of_resources-#{resources.join(',')}") end results end end |