class Preserve::Callback
Attributes
controller[R]
options[R]
parameter_key[R]
source_class[R]
Public Class Methods
new(source_class, parameter_key, options)
click to toggle source
# File lib/preserve/callback.rb, line 9 def initialize(source_class, parameter_key, options) @source_class = source_class @parameter_key = parameter_key @options = options end
Public Instance Methods
before(controller)
click to toggle source
# File lib/preserve/callback.rb, line 15 def before(controller) @controller = controller if parameter_blank? parameter_stored? ? restore_parameter : set_default_value else store_parameter end end
Private Instance Methods
parameter_blank?()
click to toggle source
# File lib/preserve/callback.rb, line 32 def parameter_blank? predicate = options[:allow_blank] ? :nil? : :blank? parameter_value.__send__(predicate) end
parameter_stored?()
click to toggle source
# File lib/preserve/callback.rb, line 37 def parameter_stored? session.key?(session_key) end
parameter_value()
click to toggle source
# File lib/preserve/callback.rb, line 53 def parameter_value keys = Array(parameter_key) keys.reduce(params) { |h, k| h[k] if h.is_a?(HASH_CLASS) } end
parameter_value=(value)
click to toggle source
# File lib/preserve/callback.rb, line 58 def parameter_value=(value) *keys, last_key = parameter_key nested_hash = keys.reduce(params) do |hash, key| hash[key] ||= HASH_CLASS.new end nested_hash[last_key] = value end
restore_parameter()
click to toggle source
# File lib/preserve/callback.rb, line 41 def restore_parameter self.parameter_value = session[session_key] end
session_key()
click to toggle source
# File lib/preserve/callback.rb, line 68 def session_key SessionKey.new(source_class, parameter_key).build end
set_default_value()
click to toggle source
# File lib/preserve/callback.rb, line 45 def set_default_value self.parameter_value = options[:default] if options[:default] end
store_parameter()
click to toggle source
# File lib/preserve/callback.rb, line 49 def store_parameter session[session_key] = parameter_value end