Module: Dejavu::ControllerMethods

Defined in:
lib/dejavu.rb

Instance Method Summary collapse

Instance Method Details

#save_for_dejavu(obj, opts = {}) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/dejavu.rb', line 47

def save_for_dejavu(obj, opts = {})
  attrs = if opts[:only] && opts[:only].is_a?(Array)
    obj.attributes.slice(*opts[:only].map(&:to_s))
  else
    obj.attributes
  end

  missing_keys = []

  if keys = opts[:nested]
    keys = [keys].flatten
    keys.each { |key| attrs = save_nested_for_dejavu(obj, key, attrs) }
  end

  if virtual = opts[:virtual]
    missing_keys += [virtual].flatten
  end

  missing_keys.each do |key|
    attrs[key] = obj.send(key)
  end

  flash[:"saved_#{object_name(obj)}_for_redisplay"] = attrs
end