ClassMethods¶
Constants¶
Methods¶
#_call_scope_context
def _call_scope_context(eval_context, query_params, proc) if proc.arity == 1 eval_context.instance_exec(query_params, &proc) else eval_context.instance_exec(&proc) end end
#_scope
def _scope @_scope ||= {} end
#all
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
- #current_scope
nodoc: def current_scope #:nodoc: ScopeRegistry.value_for(:current_scope, base_class.to_s) end
- #current_scope=
nodoc: def current_scope=(scope) #:nodoc: ScopeRegistry.set_value_for(:current_scope, base_class.to_s, scope) end
- #has_scope?
rubocop:disable Style/PredicateName
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
Similar to ActiveRecord scope
def scope(name, proc) _scope[name.to_sym] = proc klass = class << self; self; end klass.instance_eval do define_method(name) do |query_params = nil, _ = nil| eval_context = ScopeEvalContext.new(self, current_scope || self.query_proxy) proc = _scope[name.to_sym] _call_scope_context(eval_context, query_params, proc) end end end
- #scope?
rubocop:enable Style/PredicateName
def scope?(name) _scope.key?(name.to_sym) end