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