Class: ActiveRecord::Scoping::ScopeRegistry
- Inherits:
-
Object
- Object
- ActiveRecord::Scoping::ScopeRegistry
- Extended by:
- ActiveSupport::PerThreadRegistry
- Defined in:
- 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 a thread local, which is accessed through ScopeRegistry.current.
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_value_for(:current_scope, "Board", some_new_scope)
Now when you run:
registry.value_for(:current_scope, "Board")
You will obtain whatever was defined in some_new_scope. The value_for and set_value_for methods are delegated to the current ScopeRegistry object, so the above example code can also be called as:
ActiveRecord::Scoping::ScopeRegistry.set_value_for(:current_scope,
"Board", some_new_scope)
Constant Summary collapse
- VALID_SCOPE_TYPES =
[:current_scope, :ignore_default_scope]
Instance Method Summary collapse
-
#initialize ⇒ ScopeRegistry
constructor
A new instance of ScopeRegistry.
-
#set_value_for(scope_type, variable_name, value) ⇒ Object
Sets the
valuefor a givenscope_typeandvariable_name. -
#value_for(scope_type, variable_name) ⇒ Object
Obtains the value for a given
scope_nameandvariable_name.
Constructor Details
#initialize ⇒ ScopeRegistry
Returns a new instance of ScopeRegistry.
62 63 64 |
# File 'lib/active_record/scoping.rb', line 62 def initialize @registry = Hash.new { |hash, key| hash[key] = {} } end |
Instance Method Details
#set_value_for(scope_type, variable_name, value) ⇒ Object
Sets the value for a given scope_type and variable_name.
73 74 75 76 |
# File 'lib/active_record/scoping.rb', line 73 def set_value_for(scope_type, variable_name, value) raise_invalid_scope_type!(scope_type) @registry[scope_type][variable_name] = value end |
#value_for(scope_type, variable_name) ⇒ Object
Obtains the value for a given scope_name and variable_name.
67 68 69 70 |
# File 'lib/active_record/scoping.rb', line 67 def value_for(scope_type, variable_name) raise_invalid_scope_type!(scope_type) @registry[scope_type][variable_name] end |