module DataMapper::Validations::Context
Module with validation context functionality.
Contexts are implemented using a thread-local array-based stack.
Public Class Methods
any?(&block)
click to toggle source
Are there any contexts on the stack?
@return [Boolean]
true/false whether there are any contexts on the context stack
@api semipublic
# File lib/dm-validations/context.rb, line 36 def self.any?(&block) stack.any?(&block) end
current()
click to toggle source
Get the current validation context or nil (if no context is on the stack).
@return [Symbol, NilClass]
The current validation context (for the current thread), or nil if no current context is on the stack
# File lib/dm-validations/context.rb, line 26 def self.current stack.last end
in_context(context) { || ... }
click to toggle source
Execute a block of code within a specific validation context
@param [Symbol] context
the context to execute the block of code within
@api semipublic
# File lib/dm-validations/context.rb, line 14 def self.in_context(context) stack << context yield ensure stack.pop end
stack()
click to toggle source
The (thread-local) validation context stack This allows object graphs to be saved within potentially nested contexts without having to pass the validation context throughout
@api private
# File lib/dm-validations/context.rb, line 45 def self.stack Thread.current[:dm_validations_context_stack] ||= [] end
Public Instance Methods
default_validation_context()
click to toggle source
The default validation context for this Resource. This Resource's default context can be overridden by implementing default_validation_context
@return [Symbol]
the current validation context from the context stack (if valid for this model), or :default
@api semipublic
# File lib/dm-validations/context.rb, line 58 def default_validation_context model.validators.current_context || :default end