Class: ActiveRecord::Scoping::ScopeRegistry
- Defined in:
 - activerecord/lib/active_record/scoping.rb
 
Overview
This class stores the :current_scope and :ignore_default_scope values for different classes. The registry is stored as either a thread or fiber local depending on the application configuration.
This class allows you to store and get the scope values on different classes and different types of scopes. For example, if you are attempting to get the current_scope for the Board model, then you would use the following code:
registry = ActiveRecord::Scoping::ScopeRegistry
registry.set_current_scope(Board, some_new_scope)
Now when you run:
registry.current_scope(Board)
You will obtain whatever was defined in some_new_scope.
Class Method Summary collapse
Instance Method Summary collapse
- #current_scope(model, skip_inherited_scope = false) ⇒ Object
 - #global_current_scope(model, skip_inherited_scope = false) ⇒ Object
 - #ignore_default_scope(model, skip_inherited_scope = false) ⇒ Object
 - 
  
    
      #initialize  ⇒ ScopeRegistry 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
A new instance of ScopeRegistry.
 - #set_current_scope(model, value) ⇒ Object
 - #set_global_current_scope(model, value) ⇒ Object
 - #set_ignore_default_scope(model, value) ⇒ Object
 
Constructor Details
#initialize ⇒ ScopeRegistry
Returns a new instance of ScopeRegistry.
      86 87 88 89 90  | 
    
      # File 'activerecord/lib/active_record/scoping.rb', line 86 def initialize @current_scope = {} @ignore_default_scope = {} @global_current_scope = {} end  | 
  
Class Method Details
.instance ⇒ Object
      81 82 83  | 
    
      # File 'activerecord/lib/active_record/scoping.rb', line 81 def instance ActiveSupport::IsolatedExecutionState[:active_record_scope_registry] ||= new end  | 
  
Instance Method Details
#current_scope(model, skip_inherited_scope = false) ⇒ Object
      92 93 94  | 
    
      # File 'activerecord/lib/active_record/scoping.rb', line 92 def current_scope(model, skip_inherited_scope = false) value_for(@current_scope, model, skip_inherited_scope) end  | 
  
#global_current_scope(model, skip_inherited_scope = false) ⇒ Object
      108 109 110  | 
    
      # File 'activerecord/lib/active_record/scoping.rb', line 108 def global_current_scope(model, skip_inherited_scope = false) value_for(@global_current_scope, model, skip_inherited_scope) end  | 
  
#ignore_default_scope(model, skip_inherited_scope = false) ⇒ Object
      100 101 102  | 
    
      # File 'activerecord/lib/active_record/scoping.rb', line 100 def ignore_default_scope(model, skip_inherited_scope = false) value_for(@ignore_default_scope, model, skip_inherited_scope) end  | 
  
#set_current_scope(model, value) ⇒ Object
      96 97 98  | 
    
      # File 'activerecord/lib/active_record/scoping.rb', line 96 def set_current_scope(model, value) set_value_for(@current_scope, model, value) end  | 
  
#set_global_current_scope(model, value) ⇒ Object
      112 113 114  | 
    
      # File 'activerecord/lib/active_record/scoping.rb', line 112 def set_global_current_scope(model, value) set_value_for(@global_current_scope, model, value) end  | 
  
#set_ignore_default_scope(model, value) ⇒ Object
      104 105 106  | 
    
      # File 'activerecord/lib/active_record/scoping.rb', line 104 def set_ignore_default_scope(model, value) set_value_for(@ignore_default_scope, model, value) end  |