module Opium::Model::Scopable::ClassMethods

Public Instance Methods

blank_criteria() click to toggle source
# File lib/opium/model/scopable.rb, line 48
def blank_criteria
  Criteria.new( self.model_name )
end
criteria() click to toggle source
# File lib/opium/model/scopable.rb, line 10
def criteria
  @_unscoped ? blank_criteria : default_scope
end
default_scope( criteria = nil, &block ) click to toggle source
# File lib/opium/model/scopable.rb, line 27
def default_scope( criteria = nil, &block )
  @default_scope = block || criteria if block_given? || criteria
  s = @default_scope || blank_criteria
  s.is_a?( Proc ) ? unscoped { s.call } : s
end
scope( scope_name, criteria = nil, &block ) click to toggle source
# File lib/opium/model/scopable.rb, line 14
def scope( scope_name, criteria = nil, &block )
  class_eval do
    method_body = if block_given? || criteria.is_a?(Proc)
      block || criteria
    elsif criteria.nil?
      raise ArgumentError, "Criteria cannot be nil if no block is provided."
    else
      -> { criteria }
    end
    define_singleton_method( scope_name, method_body )
  end
end
scoped() click to toggle source
# File lib/opium/model/scopable.rb, line 33
def scoped
  
end
unscoped() { || ... } click to toggle source
# File lib/opium/model/scopable.rb, line 37
def unscoped
  if block_given?
    @_unscoped = true
    yield
  else
    blank_criteria
  end
ensure
  @_unscoped = false
end
with_scope( criteria ) click to toggle source
# File lib/opium/model/scopable.rb, line 52
def with_scope( criteria )
  
end