mirror of
https://github.com/meineerde/redmine.git
synced 2026-02-05 16:43:25 +00:00
Code cleanup, use array instead of handcrafted update.
git-svn-id: http://svn.redmine.org/redmine/trunk@13485 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
498a34403a
commit
360895068e
@ -63,10 +63,10 @@ class Board < ActiveRecord::Base
|
||||
# Updates topics_count, messages_count and last_message_id attributes for +board_id+
|
||||
def self.reset_counters!(board_id)
|
||||
board_id = board_id.to_i
|
||||
where(["id = ?", board_id]).
|
||||
update_all("topics_count = (SELECT COUNT(*) FROM #{Message.table_name} WHERE board_id=#{board_id} AND parent_id IS NULL)," +
|
||||
" messages_count = (SELECT COUNT(*) FROM #{Message.table_name} WHERE board_id=#{board_id})," +
|
||||
" last_message_id = (SELECT MAX(id) FROM #{Message.table_name} WHERE board_id=#{board_id})")
|
||||
Board.where(:id => board_id).
|
||||
update_all(["topics_count = (SELECT COUNT(*) FROM #{Message.table_name} WHERE board_id=:id AND parent_id IS NULL)," +
|
||||
" messages_count = (SELECT COUNT(*) FROM #{Message.table_name} WHERE board_id=:id)," +
|
||||
" last_message_id = (SELECT MAX(id) FROM #{Message.table_name} WHERE board_id=:id)", :id => board_id])
|
||||
end
|
||||
|
||||
def self.board_tree(boards, parent_id=nil, level=0)
|
||||
|
||||
@ -113,4 +113,13 @@ class BoardTest < ActiveSupport::TestCase
|
||||
assert_nil child.parent
|
||||
assert_nil child.parent_id
|
||||
end
|
||||
|
||||
def test_reset_counters_should_update_attributes
|
||||
Board.where(:id => 1).update_all(:topics_count => 0, :messages_count => 0, :last_message_id => 0)
|
||||
Board.reset_counters!(1)
|
||||
board = Board.find(1)
|
||||
assert_equal board.topics.count, board.topics_count
|
||||
assert_equal board.messages.count, board.messages_count
|
||||
assert_equal board.messages.order("id DESC").first.id, board.last_message_id
|
||||
end
|
||||
end
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user