6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/changes_are_logged.rb', line 6
def log_it
return unless @log_changes
unless @modifying_user_id
@modifying_user_id = if defined?(StaffUser) && staff_user = StaffUser.current
@modifying_user_is_staff = true
staff_user.id
end
@modifying_user_id ||= if defined?(current_user) && current_user && current_user.respond_to?(:id)
current_user.id
end
end
if new_record?
@change_comments = "new record" if @change_comments.blank?
@changes_logged = {}
save_change_log
elsif (ActiveRecord::VERSION::STRING >= '5.1' ? saved_changes? : changed?) || !@change_comments.blank?
@changes_logged = HashWithIndifferentAccess.new
ar_version_changes = ActiveRecord::VERSION::STRING >= '5.1' ? saved_changes : changes
if log_changes_callback
ar_version_changes.each do |attribute, (old_value, new_value)|
@changes_logged[attribute] = log_changes_callback.call(
attribute, old_value, new_value
)
end
else
@changes_logged.merge!(ar_version_changes)
end
@changes_logged.delete("updated_at")
save_change_log
end
end
|