fixes #804
This commit is contained in:
@@ -87,6 +87,7 @@ class Tag < ActiveRecord::Base
|
||||
def update_category_cache_for_all(force = false)
|
||||
if category_changed? || force
|
||||
update_category_cache
|
||||
update_category_post_counts if category_changed?
|
||||
|
||||
Danbooru.config.other_server_hosts.each do |host|
|
||||
delay(:queue => host).update_category_cache
|
||||
@@ -94,6 +95,12 @@ class Tag < ActiveRecord::Base
|
||||
end
|
||||
end
|
||||
|
||||
def update_category_post_counts
|
||||
old_field = "tag_count_#{Danbooru.config.reverse_tag_category_mapping[category_was]}".downcase
|
||||
new_field = "tag_count_#{category_name}".downcase
|
||||
Post.raw_tag_match(name).update_all("#{old_field} = #{old_field} - 1, #{new_field} = #{new_field} + 1")
|
||||
end
|
||||
|
||||
def update_category_cache
|
||||
Cache.put("tc:#{Cache.sanitize(name)}", category, 1.hour)
|
||||
end
|
||||
|
||||
@@ -80,7 +80,7 @@ class CommentTest < ActiveSupport::TestCase
|
||||
comment_vote = c1.vote!("up")
|
||||
assert_equal([], comment_vote.errors.full_messages)
|
||||
comment_vote = c1.vote!("up")
|
||||
assert_equal(["User has already voted for this comment"], comment_vote.errors.full_messages)
|
||||
assert_equal(["You have already voted for this comment"], comment_vote.errors.full_messages)
|
||||
assert_equal(1, CommentVote.count)
|
||||
assert_equal(1, CommentVote.last.score)
|
||||
|
||||
|
||||
@@ -373,6 +373,12 @@ class PostTest < ActiveSupport::TestCase
|
||||
should "update the category cache of the tag" do
|
||||
assert_equal(Tag.categories.copyright, Cache.get("tc:abc"))
|
||||
end
|
||||
|
||||
should "update the tag counts of the posts" do
|
||||
assert_equal(0, @post.tag_count_artist)
|
||||
assert_equal(1, @post.tag_count_copyright)
|
||||
assert_equal(0, @post.tag_count_general)
|
||||
end
|
||||
end
|
||||
|
||||
context "tagged with a metatag" do
|
||||
|
||||
Reference in New Issue
Block a user