diff --git a/app/models/post.rb b/app/models/post.rb index 7d22dac16..cbc45514a 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -324,8 +324,6 @@ class Post < ActiveRecord::Base def update_tag_post_counts decrement_tags = tag_array_was - tag_array increment_tags = tag_array - tag_array_was - Post.execute_sql("UPDATE tags SET post_count = post_count - 1 WHERE name IN (?)", decrement_tags) if decrement_tags.any? - Post.execute_sql("UPDATE tags SET post_count = post_count + 1 WHERE name IN (?)", increment_tags) if increment_tags.any? Post.expire_cache_for_all(decrement_tags) if decrement_tags.any? Post.expire_cache_for_all(increment_tags) if increment_tags.any? Post.expire_cache_for_all([""]) if new_record? || id <= 100_000 @@ -338,7 +336,7 @@ class Post < ActiveRecord::Base self.tag_count_copyright = 0 self.tag_count_character = 0 - categories = Tag.categories_for(tag_array) + categories = Tag.categories_for(tag_array, :disable_caching => true) categories.each_value do |category| self.tag_count += 1 diff --git a/app/models/tag.rb b/app/models/tag.rb index 56868e142..6ddc6475b 100644 --- a/app/models/tag.rb +++ b/app/models/tag.rb @@ -66,20 +66,21 @@ class Tag < ActiveRecord::Base select_value_sql("SELECT category FROM tags WHERE name = ?", tag_name).to_i end - def category_for(tag_name) - Cache.get("tc:#{Cache.sanitize(tag_name)}") do + def category_for(tag_name, options = {}) + if options[:disable_caching] select_category_for(tag_name) + else + Cache.get("tc:#{Cache.sanitize(tag_name)}") do + select_category_for(tag_name) + end end end - def categories_for(tag_names) + def categories_for(tag_names, options) Array(tag_names).inject({}) do |hash, tag_name| - hash[tag_name] = category_for(tag_name) + hash[tag_name] = category_for(tag_name, options) hash end - # Cache.get_multi(tag_names, "tc") do |name| - # select_category_for(name) - # end end end