Module: Opium::Model::Scopable::ClassMethods
- Defined in:
- lib/opium/model/scopable.rb
Instance Method Summary collapse
- #blank_criteria ⇒ Object
- #criteria ⇒ Object
- #default_scope(criteria = nil, &block) ⇒ Object
- #scope(scope_name, criteria = nil, &block) ⇒ Object
- #scoped ⇒ Object
- #unscoped ⇒ Object
- #with_scope(criteria) ⇒ Object
Instance Method Details
#blank_criteria ⇒ Object
48 49 50 |
# File 'lib/opium/model/scopable.rb', line 48 def blank_criteria Criteria.new( self.model_name ) end |
#criteria ⇒ Object
10 11 12 |
# File 'lib/opium/model/scopable.rb', line 10 def criteria @_unscoped ? blank_criteria : default_scope end |
#default_scope(criteria = nil, &block) ⇒ Object
27 28 29 30 31 |
# 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) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 |
# 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 ⇒ Object
33 34 35 |
# File 'lib/opium/model/scopable.rb', line 33 def scoped end |
#unscoped ⇒ Object
37 38 39 40 41 42 43 44 45 46 |
# 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) ⇒ Object
52 53 54 |
# File 'lib/opium/model/scopable.rb', line 52 def with_scope( criteria ) end |