diff --git a/app/logical/post_sets/artist.rb b/app/logical/post_sets/artist.rb index cdd822f8f..e3cc9371f 100644 --- a/app/logical/post_sets/artist.rb +++ b/app/logical/post_sets/artist.rb @@ -1,5 +1,5 @@ module PostSets - class Artist < Post + class Artist < PostSets::Post attr_reader :artist def initialize(artist) diff --git a/app/models/tag.rb b/app/models/tag.rb index 610715317..9282780ba 100644 --- a/app/models/tag.rb +++ b/app/models/tag.rb @@ -309,6 +309,7 @@ class Tag < ActiveRecord::Base module RelationMethods def update_related + return unless should_update_related? counts = RelatedTagCalculator.calculate_from_sample(Danbooru.config.post_sample_size, name) update_attributes(:related_tags => RelatedTagCalculator.convert_hash_to_string(counts), :related_tags_updated_at => Time.now) end @@ -331,7 +332,8 @@ class Tag < ActiveRecord::Base end def related_tag_array - related_tags.split(/ /).in_groups_of(2) + update_related_if_outdated + related_tags.to_s.split(/ /).in_groups_of(2) end end @@ -354,5 +356,6 @@ class Tag < ActiveRecord::Base extend StatisticsMethods include NameMethods extend ParseMethods + include RelationMethods extend SuggestionMethods end diff --git a/app/presenters/post_set_presenters/post.rb b/app/presenters/post_set_presenters/post.rb index 0ce1a4b46..07cd2e9bd 100644 --- a/app/presenters/post_set_presenters/post.rb +++ b/app/presenters/post_set_presenters/post.rb @@ -4,11 +4,18 @@ module PostSetPresenters def initialize(post_set) @post_set = post_set - @tag_set_presenter = TagSetPresenter.new( - RelatedTagCalculator.calculate_from_sample_to_array( - post_set.tag_string - ).map {|x| x[0]} - ) + @tag_set_presenter = TagSetPresenter.new(related_tags) + end + + def related_tags + if post_set.is_single_tag? + tag = Tag.find_by_name(post_set.tag_string) + if tag + return tag.related_tag_array.map(&:first) + end + end + + RelatedTagCalculator.calculate_from_sample_to_array(post_set.tag_string).map(&:first) end def posts