summaryrefslogtreecommitdiffstats
path: root/app/models/message.rb
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2012-07-07 15:09:57 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2012-07-07 15:09:57 +0000
commitefc6abea07a7a437b0a68cfb297b53fbe6d9de2b (patch)
treedb01dd284538ccbdfa67d719875d7e9467275bdd /app/models/message.rb
parent851fbaf750d4bb1a579a02d636339793896050a6 (diff)
downloadredmine-efc6abea07a7a437b0a68cfb297b53fbe6d9de2b.tar.gz
redmine-efc6abea07a7a437b0a68cfb297b53fbe6d9de2b.zip
Fixed that deleting the last reply of a topic does not update last_reply_id.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9939 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/models/message.rb')
-rw-r--r--app/models/message.rb16
1 files changed, 6 insertions, 10 deletions
diff --git a/app/models/message.rb b/app/models/message.rb
index b3dd73c25..80fff2cf9 100644
--- a/app/models/message.rb
+++ b/app/models/message.rb
@@ -41,9 +41,9 @@ class Message < ActiveRecord::Base
validates_length_of :subject, :maximum => 255
validate :cannot_reply_to_locked_topic, :on => :create
- after_create :add_author_as_watcher, :update_parent_last_reply
+ after_create :add_author_as_watcher, :reset_counters!
after_update :update_messages_board
- after_destroy :reset_board_counters
+ after_destroy :reset_counters!
scope :visible, lambda {|*args| { :include => {:board => :project},
:conditions => Project.allowed_to_condition(args.shift || User.current, :view_messages, *args) } }
@@ -63,13 +63,6 @@ class Message < ActiveRecord::Base
errors.add :base, 'Topic is locked' if root.locked? && self != root
end
- def update_parent_last_reply
- if parent
- parent.reload.update_attribute(:last_reply_id, self.id)
- end
- board.reset_counters!
- end
-
def update_messages_board
if board_id_changed?
Message.update_all("board_id = #{board_id}", ["id = ? OR parent_id = ?", root.id, root.id])
@@ -78,7 +71,10 @@ class Message < ActiveRecord::Base
end
end
- def reset_board_counters
+ def reset_counters!
+ if parent && parent.id
+ Message.update_all({:last_reply_id => parent.children.maximum(:id)}, {:id => parent.id})
+ end
board.reset_counters!
end