PERF: Reduce DB queries when serializing ignore/mute information (#8629)

* PERF: Cache ignored and muted user ids in the current_user object
* PERF: Avoid DB queries when checking ignore/mute permission in guardian
This commit is contained in:
David Taylor
2020-01-02 13:04:08 +00:00
committed by GitHub
parent a9f90cdec3
commit 45c5f56ffc
6 changed files with 73 additions and 23 deletions
+2 -2
View File
@@ -1118,7 +1118,7 @@ class UsersController < ApplicationController
user = fetch_user_from_params
if params[:notification_level] == "ignore"
guardian.ensure_can_ignore_user!(user.id)
guardian.ensure_can_ignore_user!(user)
MutedUser.where(user: current_user, muted_user: user).delete_all
ignored_user = IgnoredUser.find_by(user: current_user, ignored_user: user)
if ignored_user.present?
@@ -1127,7 +1127,7 @@ class UsersController < ApplicationController
IgnoredUser.create!(user: current_user, ignored_user: user, expiring_at: Time.parse(params[:expiring_at]))
end
elsif params[:notification_level] == "mute"
guardian.ensure_can_mute_user!(user.id)
guardian.ensure_can_mute_user!(user)
IgnoredUser.where(user: current_user, ignored_user: user).delete_all
MutedUser.find_or_create_by!(user: current_user, muted_user: user)
elsif params[:notification_level] == "normal"