mirror of
https://github.com/discourse/discourse.git
synced 2025-09-06 10:50:21 +08:00
Merge pull request #3878 from gdpelican/optimize-all-allowed-users
Optimize all_allowed_users query
This commit is contained in:
commit
ff0c12efa2
2 changed files with 43 additions and 5 deletions
|
@ -253,11 +253,8 @@ class Topic < ActiveRecord::Base
|
|||
|
||||
# all users (in groups or directly targetted) that are going to get the pm
|
||||
def all_allowed_users
|
||||
# TODO we should probably change this to 1 query
|
||||
allowed_user_ids = allowed_users.select('users.id').to_a
|
||||
allowed_group_user_ids = allowed_group_users.select('users.id').to_a
|
||||
allowed_staff_ids = private_message? && has_flags? ? User.where(moderator: true).pluck(:id).to_a : []
|
||||
User.where('id IN (?)', allowed_user_ids + allowed_group_user_ids + allowed_staff_ids)
|
||||
moderators_sql = " UNION #{User.moderators.to_sql}" if private_message? && has_flags?
|
||||
User.from("(#{allowed_users.to_sql} UNION #{allowed_group_users.to_sql}#{moderators_sql}) as users")
|
||||
end
|
||||
|
||||
# Additional rate limits on topics: per day and private messages per day
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue