diff options
author | Johan Sørensen <johan@johansorensen.com> | 2009-11-05 11:29:50 +0100 |
---|---|---|
committer | Johan Sørensen <johan@johansorensen.com> | 2009-11-05 11:29:50 +0100 |
commit | 12b9fc2f85ed0bd005bd24114503058e74227fe7 (patch) | |
tree | 42495933df8ad9e3582184f9331a0117a5558987 /app/models/merge_request.rb | |
parent | afb97fccdd3f4a4fc26b116c815e8ae68a253abb (diff) | |
download | gitorious-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.rb | 10 |
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 |