]> source.dussan.org Git - redmine.git/commitdiff
Project#all_issue_custom_fields now returns a scope.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 1 Jun 2013 10:26:17 +0000 (10:26 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 1 Jun 2013 10:26:17 +0000 (10:26 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11916 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/project.rb

index 6e31eafd43c88f08a00de2d1c30faed4078c5d63..f5ae92f9b474b662a72c69b661a4147ae77e12cc 100644 (file)
@@ -513,10 +513,14 @@ class Project < ActiveRecord::Base
     members.select {|m| m.principal.present? && (m.mail_notification? || m.principal.mail_notification == 'all')}.collect {|m| m.principal}
   end
 
-  # Returns an array of all custom fields enabled for project issues
+  # Returns a scope of all custom fields enabled for project issues
   # (explictly associated custom fields and custom fields enabled for all projects)
   def all_issue_custom_fields
-    @all_issue_custom_fields ||= (IssueCustomField.for_all + issue_custom_fields).uniq.sort
+    @all_issue_custom_fields ||= IssueCustomField.
+      sorted.
+      where("is_for_all = ? OR id IN (SELECT DISTINCT cfp.custom_field_id" +
+        " FROM #{table_name_prefix}custom_fields_projects#{table_name_suffix} cfp" +
+        " WHERE cfp.project_id = ?)", true, id)
   end
 
   # Returns an array of all custom fields enabled for project time entries