Module: Preserve

Defined in:
lib/preserve.rb,
lib/preserve/version.rb

Constant Summary collapse

VERSION =
'1.0.0'.freeze

Instance Method Summary collapse

Instance Method Details

#_set_preserve_callback(options, &block) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/preserve.rb', line 24

def _set_preserve_callback(options, &block)
  if respond_to?(:before_action)
    before_action(options, &block)
  else
    before_filter(options, &block)
  end
end

#preserve(*parameter_names) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/preserve.rb', line 4

def preserve(*parameter_names)
  options = parameter_names.extract_options!

  allow_blank = options.delete(:allow_blank)
  prefix = options.delete(:prefix)

  parameter_names.each do |name|
    key = [prefix, controller_name, name].compact.join('_')
    predicate = allow_blank ? :nil? : :blank?

    _set_preserve_callback(options) do
      if params[name].send(predicate)
        params[name] = session[key] if session.key?(key)
      else
        session[key] = params[name]
      end
    end
  end
end