feedbacks: fix mod action when feedback is deleted.

Fix feedbacks logging an "updated user feedback" mod action instead of a "deleted user feedback"
mod action when a feedback was deleted.
This commit is contained in:
evazion
2022-11-20 15:08:43 -06:00
parent d99da72744
commit cc13c5cd57
4 changed files with 19 additions and 12 deletions

View File

@@ -3,19 +3,14 @@
class UserFeedback < ApplicationRecord
self.table_name = "user_feedback"
attr_accessor :disable_dmail_notification
attr_accessor :disable_dmail_notification, :updater
belongs_to :user
belongs_to :creator, class_name: "User"
validates :body, presence: true
validates :category, presence: true, inclusion: { in: %w[positive negative neutral] }
after_create :create_dmail, unless: :disable_dmail_notification
after_update(:if => ->(rec) { CurrentUser.id != rec.creator_id}) do |rec|
ModAction.log(%{updated user feedback for "#{rec.user.name}":#{Routes.user_path(rec.user)}}, :user_feedback_update, subject: user, user: CurrentUser.user)
end
after_destroy(:if => ->(rec) { CurrentUser.id != rec.creator_id}) do |rec|
ModAction.log(%{deleted user feedback for "#{rec.user.name}":#{Routes.user_path(rec.user)}}, :user_feedback_delete, subject: user, user: CurrentUser.user)
end
after_update :create_mod_action
deletable
@@ -58,6 +53,16 @@ class UserFeedback < ApplicationRecord
Dmail.create_automated(:to_id => user_id, :title => "Your user record has been updated", :body => body)
end
def create_mod_action
raise "Updater not set" if updater.nil?
if saved_change_to_is_deleted == [false, true] && creator != updater
ModAction.log(%{deleted user feedback for "#{user.name}":#{Routes.user_path(user)}}, :user_feedback_delete, subject: user, user: updater)
elsif creator != updater
ModAction.log(%{updated user feedback for "#{user.name}":#{Routes.user_path(user)}}, :user_feedback_update, subject: user, user: updater)
end
end
def self.available_includes
[:creator, :user]
end