module Querii::QueryObject::ClassMethods
Attributes
model_name[RW]
optionally override the default determined by top level namespace
Public Instance Methods
call(*args, relation: base_class.all, **kargs)
click to toggle source
# File lib/querii/query_object.rb, line 17 def call(*args, relation: base_class.all, **kargs) relation.extending(self::Scopes).default(*args, **kargs) end
Also aliased as: all
default_scope(scope = nil)
click to toggle source
# File lib/querii/query_object.rb, line 41 def default_scope(scope = nil) scope = Proc.new if block_given? scope(:default, scope) end
scope(name, body, &block)
click to toggle source
# File lib/querii/query_object.rb, line 23 def scope(name, body, &block) unless body.respond_to?(:call) raise ArgumentError, 'The scope body needs to be callable.' end self::Scopes.send(:define_method, name) do |*args, **kargs| # unfortunately empty double splatted kargs still count as arguments # for a lambda's argument arity checking if kargs.empty? scope = all.scoping { instance_exec(*args, &body) } else scope = all.scoping { instance_exec(*args, **kargs, &body) } end scope || all end end
Private Instance Methods
base_class()
click to toggle source
queries are namespaced by plural model name from which we can infer query base model
# File lib/querii/query_object.rb, line 48 def base_class klass = model_name || self.to_s.split('::').first.singularize klass.to_s.constantize end