module Elasticsearch::Persistence::Scoping::Named::ClassMethods
Constants
- BLACKLISTED_CLASS_METHODS
Public Instance Methods
all(options={})
click to toggle source
# File lib/elasticsearch/persistence/scoping/named.rb, line 8 def all(options={}) if current_scope current_scope.clone else default_scoped.size(10000) end end
scope(name, body, &block)
click to toggle source
# File lib/elasticsearch/persistence/scoping/named.rb, line 31 def scope(name, body, &block) if dangerous_class_method?(name) raise ArgumentError, "You tried to define a scope named \"#{name}\" " \ "on the model \"#{self.name}\", but Active Record already defined " \ "a class method with the same name." end extension = Module.new(&block) if block singleton_class.send(:define_method, name) do |*args| scope = all.scoping { body.call(*args) } scope = scope.extending(extension) if extension scope || all end end
Private Instance Methods
class_method_defined_within?(name, klass, superklass = klass.superclass)
click to toggle source
# File lib/elasticsearch/persistence/scoping/named.rb, line 55 def class_method_defined_within?(name, klass, superklass = klass.superclass) # :nodoc if klass.respond_to?(name, true) if superklass.respond_to?(name, true) klass.method(name).owner != superklass.method(name).owner else true end else false end end
dangerous_class_method?(method_name)
click to toggle source
# File lib/elasticsearch/persistence/scoping/named.rb, line 51 def dangerous_class_method?(method_name) BLACKLISTED_CLASS_METHODS.include?(method_name.to_s) || class_method_defined_within?(method_name, Model, self.superclass) end