Class: AuditedModelsObserver::WhatBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/audit_log/observer.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(changes) ⇒ WhatBuilder

Returns a new instance of WhatBuilder.



189
190
191
# File 'lib/audit_log/observer.rb', line 189

def initialize(changes)
  self.changes = changes  
end

Instance Attribute Details

#changesObject

Returns the value of attribute changes.



187
188
189
# File 'lib/audit_log/observer.rb', line 187

def changes
  @changes
end

Instance Method Details

#buildObject



193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
# File 'lib/audit_log/observer.rb', line 193

def build
  what = {id: changes[:model].id, event: :update}
  changes[:fields_updates].each{|field_name, old_and_new_values| 
    what[field_name] = old_and_new_values
  }
  
  changes[:has_many].each{|association_name, changes_list|
    what[association_name] = [] unless changes_list.empty?
    changes_list.each{|nested_changes| 
      what_nested = {id: nested_changes[:model].id, event: nested_changes[:event]}
      nested_changes[:fields_updates].each{|field_name, old_and_new_values| 
        what_nested[field_name] = old_and_new_values
      } if nested_changes[:fields_updates]
      what[association_name] << what_nested
    }
  }
  
  changes[:has_one].each{|association_name, nested_changes|
    if nested_changes[:model]
      what_nested = {id: nested_changes[:model].id, event: nested_changes[:event]}
      nested_changes[:fields_updates].each{|field_name, old_and_new_values| 
        what_nested[field_name] = old_and_new_values
      } if nested_changes[:fields_updates]
      what[association_name] = what_nested
    end
  }
  
  what
end