module Mycrm::Facade::ClassMethods
Public Class Methods
extended(descendant)
click to toggle source
# File lib/mycrm/facade.rb, line 60 def self.extended(descendant) descendant.singleton_class.class_eval do attr_accessor :delegate_classes end end
Public Instance Methods
delegate(name, clazz, relations = {})
click to toggle source
# File lib/mycrm/facade.rb, line 66 def delegate(name, clazz, relations = {}) self.delegate_classes ||= {} delegate_classes[name] = { class: clazz, relations: relations } end
relations(delegate)
click to toggle source
# File lib/mycrm/facade.rb, line 71 def relations(delegate) delegate_classes[delegate][:relations] end
run(method = :find, *args) { |name, delegate, response| ... }
click to toggle source
# File lib/mycrm/facade.rb, line 81 def run(method = :find, *args) attributes = {}.tap do |response| Mycrm::Connectable.session do self.delegate_classes.each do |name, delegate| res = if block_given? yield(name, delegate, response) elsif delegate[:class].respond_to? :find delegate[:class].send(method, *args) end response[name] = res.is_a?(Array) ? res.map(&:to_json) : res.to_json end end end new(attributes) end