Module: RememberParams

Extended by:
ActiveSupport::Concern
Defined in:
lib/remember_params.rb,
lib/remember_params/version.rb

Constant Summary collapse

VERSION =
'0.1.0'

Instance Method Summary collapse

Instance Method Details

#restore_or_save_paramsObject



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/remember_params.rb', line 29

def restore_or_save_params
  return unless request.get?
  return unless respond_to? :remember_params_config
  return unless config = self.remember_params_config[action_name]

  session[:remembered_params] ||= {}
  key = params.slice(:controller, :action).values.join('/').parameterize
  params_to_remember = params.permit(*config[:params]).to_h

  # Restore params
  if params_to_remember.empty? &&
    session[:remembered_params][key]&.except('remembered_at')&.select{|_,v| v.present?}&.any? &&
    DateTime.parse(session[:remembered_params][key]['remembered_at']) >
      (DateTime.now - config[:duration])
  then
    redirect_to params: session[:remembered_params][key].except('remembered_at')
  end

  # Save params (also refreshes remembered_at after restore)
  if params_to_remember.any?
    params_to_remember['remembered_at'] = DateTime.now
    session[:remembered_params][key] = params_to_remember
  end
end