]> source.dussan.org Git - redmine.git/commitdiff
Project.activities should always return a ActiveRecord::Relation (#15983).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 7 Feb 2014 08:36:49 +0000 (08:36 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 7 Feb 2014 08:36:49 +0000 (08:36 +0000)
git-svn-id: http://svn.redmine.org/redmine/trunk@12854 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/project.rb
test/unit/project_test.rb

index 3f3e216f9c3563b888f5ad027ed4028007a3d5ae..a25513baffd78359c417fa5f577442a460c59251 100644 (file)
@@ -995,15 +995,15 @@ class Project < ActiveRecord::Base
 
   # Returns the systemwide active activities merged with the project specific overrides
   def system_activities_and_project_overrides(include_inactive=false)
-    if include_inactive
-      return TimeEntryActivity.shared.
-        where("id NOT IN (?)", self.time_entry_activities.collect(&:parent_id)).all +
-        self.time_entry_activities
-    else
-      return TimeEntryActivity.shared.active.
-        where("id NOT IN (?)", self.time_entry_activities.collect(&:parent_id)).all +
-        self.time_entry_activities.active
+    t = TimeEntryActivity.table_name
+    scope = TimeEntryActivity.where(
+      "(#{t}.project_id IS NULL AND #{t}.id NOT IN (?)) OR (#{t}.project_id = ?)",
+      time_entry_activities.map(&:parent_id), id
+    )
+    unless include_inactive
+      scope = scope.active
     end
+    scope
   end
 
   # Archives subprojects recursively
index 7a2817d17a4851f07d1e2755f4e31326638a5dba..0dc3a54f1d8f7f0201271c59e6b4134fe608eb17 100644 (file)
@@ -730,6 +730,7 @@ class ProjectTest < ActiveSupport::TestCase
   def test_activities_should_use_the_system_activities
     project = Project.find(1)
     assert_equal project.activities, TimeEntryActivity.where(:active => true).all
+    assert_kind_of ActiveRecord::Relation, project.activities
   end
 
 
@@ -739,6 +740,7 @@ class ProjectTest < ActiveSupport::TestCase
     assert overridden_activity.save!
 
     assert project.activities.include?(overridden_activity), "Project specific Activity not found"
+    assert_kind_of ActiveRecord::Relation, project.activities
   end
 
   def test_activities_should_not_include_the_inactive_project_specific_activities