Module: ActiveGraph::Node::Scope::ClassMethods
- Defined in:
 - lib/active_graph/node/scope.rb
 
Instance Method Summary collapse
- #_call_scope_context(eval_context, *query_params, **kwargs, &proc) ⇒ Object
 - #all(new_var = nil) ⇒ Object
 - 
  
    
      #full_scopes  ⇒ Hash 
    
    
  
  
  
  
  
  
  
  
  
    
Of scopes available to this model.
 - 
  
    
      #has_scope?(name)  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
rubocop:disable Naming/PredicateName.
 - 
  
    
      #scope(name, proc)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Similar to ActiveRecord scope.
 - 
  
    
      #scope?(name)  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
True if model has access to scope with this name.
 - 
  
    
      #scopes  ⇒ Hash 
    
    
  
  
  
  
  
  
  
  
  
    
Of scopes assigned to this model.
 
Instance Method Details
#_call_scope_context(eval_context, *query_params, **kwargs, &proc) ⇒ Object
      81 82 83 84 85 86 87 88 89  | 
    
      # File 'lib/active_graph/node/scope.rb', line 81 def _call_scope_context(eval_context, *query_params, **kwargs, &proc) last_vararg_index = proc.arity - (kwargs.empty? ? 1 : 2) query_params.fill(nil, query_params.length..last_vararg_index) if RUBY_VERSION < '3' && kwargs.empty? eval_context.instance_exec(*query_params, &proc) else eval_context.instance_exec(*query_params, **kwargs, &proc) end end  | 
  
#all(new_var = nil) ⇒ Object
      91 92 93 94 95 96 97 98  | 
    
      # File 'lib/active_graph/node/scope.rb', line 91 def all(new_var = nil) var = new_var || (current_scope ? current_scope.node_identity : :n) if current_scope current_scope.new_link(var) else self.as(var) end end  | 
  
#full_scopes ⇒ Hash
Returns of scopes available to this model. Keys are scope name, value is scope callable.
      75 76 77 78 79  | 
    
      # File 'lib/active_graph/node/scope.rb', line 75 def full_scopes self.ancestors.find_all { |a| a.respond_to?(:scopes) }.reverse.inject({}) do |scopes, a| scopes.merge(a.scopes) end end  | 
  
#has_scope?(name) ⇒ Boolean
rubocop:disable Naming/PredicateName
      57 58 59 60 61  | 
    
      # File 'lib/active_graph/node/scope.rb', line 57 def has_scope?(name) ActiveSupport::Deprecation.warn 'has_scope? is deprecated and may be removed from future releases, use scope? instead.', caller scope?(name) end  | 
  
#scope(name, proc) ⇒ Object
Similar to ActiveRecord scope
      39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54  | 
    
      # File 'lib/active_graph/node/scope.rb', line 39 def scope(name, proc) scopes[name.to_sym] = proc klass = class << self; self; end klass.instance_eval do define_method(name) do |*query_params, **kwargs| eval_context = ScopeEvalContext.new(self, current_scope || self.query_proxy) proc = full_scopes[name.to_sym] _call_scope_context(eval_context, *query_params, **kwargs, &proc) end end define_method(name) do |*query_params, **kwargs| as(:n).public_send(name, *query_params, **kwargs) end end  | 
  
#scope?(name) ⇒ Boolean
Returns true if model has access to scope with this name.
      65 66 67  | 
    
      # File 'lib/active_graph/node/scope.rb', line 65 def scope?(name) full_scopes.key?(name.to_sym) end  | 
  
#scopes ⇒ Hash
Returns of scopes assigned to this model. Keys are scope name, value is scope callable.
      70 71 72  | 
    
      # File 'lib/active_graph/node/scope.rb', line 70 def scopes @scopes ||= {} end  |