summaryrefslogtreecommitdiffstats
path: root/app/models/merge_request.rb
diff options
context:
space:
mode:
authorJohan Sørensen <johan@johansorensen.com>2009-11-05 11:29:50 +0100
committerJohan Sørensen <johan@johansorensen.com>2009-11-05 11:29:50 +0100
commit12b9fc2f85ed0bd005bd24114503058e74227fe7 (patch)
tree42495933df8ad9e3582184f9331a0117a5558987 /app/models/merge_request.rb
parentafb97fccdd3f4a4fc26b116c815e8ae68a253abb (diff)
downloadgitorious-mainline-outdated-12b9fc2f85ed0bd005bd24114503058e74227fe7.zip
gitorious-mainline-outdated-12b9fc2f85ed0bd005bd24114503058e74227fe7.tar.gz
gitorious-mainline-outdated-12b9fc2f85ed0bd005bd24114503058e74227fe7.tar.bz2
Use a proper SQL query for MergeRequest.cascaded_comments so we can order them properly
Some MergeRequestController test cases had to be reworked as an effect of this, since they stub out too much internal logic of ActiveRecord, by stubbing out the association proxies, which is not a good thing to do anyway.
Diffstat (limited to 'app/models/merge_request.rb')
-rw-r--r--app/models/merge_request.rb10
1 files changed, 6 insertions, 4 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 51be6b0..85d00aa 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -590,9 +590,11 @@ class MergeRequest < ActiveRecord::Base
# Comments made on self and all versions
def cascaded_comments
- (comments.find(:all, :include => [:target, :user]) +
- Array(versions).collect{|v| v.comments.find(:all, :include => [:target, :user]) }
- ).flatten
+ Comment.find(:all,
+ :conditions => ["(target_type = 'MergeRequest' AND target_id = ?) OR " +
+ "(target_type = 'MergeRequestVersion' AND target_id in (?))",
+ self.id, self.version_ids],
+ :order => "comments.created_at",
+ :include => [:target,:user])
end
-
end