Module: LogChanges::Base
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/log_changes/base.rb
Instance Method Summary collapse
- #build_changes_str ⇒ Object
-
#log_changes ⇒ Object
TODO: add created_by, created_at, updated_by, and updated_at.
- #stringify_value(val) ⇒ Object
Instance Method Details
#build_changes_str ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/log_changes/base.rb', line 21 def build_changes_str bt_assocs = self.class.reflect_on_all_associations(:belongs_to).map{|a| [a.[:foreign_key].present? ? a.[:foreign_key].to_s : "#{a.name}_id".to_s, {name: a.name, class: a.[:polymorphic].present? ? nil : a.klass}]}.to_h @is_new_record = new_record? h = {} changes.each do |k, vals| bt_assoc = bt_assocs[k.to_s] if bt_assoc.present? h[bt_assoc[:name]] = [] vals.each do |val| if bt_assoc[:class].nil? h[bt_assoc[:name]] << val else v = bt_assoc[:class].find_by_id( val ) h[bt_assoc[:name]] << "{class: #{bt_assoc[:class].name}, id: #{val}} #{stringify_value(v)}" end end else h[k] = vals.map{|v| stringify_value(v)} end end @change_log_str = if new_record? h.map{|key_pair| " #{key_pair[0]}: #{key_pair[1][1]}"}.join("\n") else h.map{|key_pair| " #{key_pair[0]}:\n FROM: #{key_pair[1][0]}\n TO: #{key_pair[1][1]}"}.join("\n") end end |
#log_changes ⇒ Object
TODO: add created_by, created_at, updated_by, and updated_at
11 12 13 14 15 16 17 18 19 |
# File 'lib/log_changes/base.rb', line 11 def log_changes log_str = (@is_new_record ? 'New' : 'Updated') + " #{self.class.name} {id: #{id}} #{to_s}\n" log_str += @change_log_str if @change_log_str sr_log( self.class.name, "#{Time.zone.now.strftime('%-m/%-d/%Y at %-l:%M %p (%Z)')}\n#{log_str}", dir: Rails.root.join('log', 'record_changes').to_s ) end |
#stringify_value(val) ⇒ Object
49 50 51 52 53 54 55 56 57 58 |
# File 'lib/log_changes/base.rb', line 49 def stringify_value val case when val.nil? 'nil' when val.is_a?(Time) || val.is_a?(ActiveSupport::TimeWithZone) val.strftime('%-m/%-d/%Y at %-l:%M %p (%Z)') else val.to_s end end |