summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGo MAEDA <maeda@farend.jp>2024-01-04 01:23:25 +0000
committerGo MAEDA <maeda@farend.jp>2024-01-04 01:23:25 +0000
commit02fbe55855251d43ceea6be70797524b6358cf5c (patch)
tree6c8f0d0d22c9dd4c810727207831e6849c497d66
parent70bd44395d0317672626887a1c4188b80cd107dd (diff)
downloadredmine-02fbe55855251d43ceea6be70797524b6358cf5c.tar.gz
redmine-02fbe55855251d43ceea6be70797524b6358cf5c.zip
Optimize Project#notified_users to improve issue create/update speed (#23328).
Patch by Holger Just (@hjust). git-svn-id: https://svn.redmine.org/redmine/trunk@22590 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/models/project.rb9
1 files changed, 2 insertions, 7 deletions
diff --git a/app/models/project.rb b/app/models/project.rb
index 082e83f55..58346d373 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -34,6 +34,7 @@ class Project < ActiveRecord::Base
# Memberships of active users only
has_many :members,
lambda {joins(:principal).where(:users => {:type => 'User', :status => Principal::STATUS_ACTIVE})}
+ has_many :users, through: :members
has_many :enabled_modules, :dependent => :delete_all
has_and_belongs_to_many :trackers, lambda {order(:position)}
has_many :issues, :dependent => :destroy
@@ -625,13 +626,7 @@ class Project < ActiveRecord::Base
# Returns the users that should be notified on project events
def notified_users
- # TODO: User part should be extracted to User#notify_about?
- users =
- members.preload(:principal).select do |m|
- m.principal.present? &&
- (m.mail_notification? || m.principal.mail_notification == 'all')
- end
- users.collect {|m| m.principal}
+ users.where('members.mail_notification = ? OR users.mail_notification = ?', true, 'all')
end
# Returns a scope of all custom fields enabled for project issues