diff --git a/app/controllers/reports_controller.rb b/app/controllers/reports_controller.rb index 164dd2424..30c56defc 100644 --- a/app/controllers/reports_controller.rb +++ b/app/controllers/reports_controller.rb @@ -21,6 +21,6 @@ class ReportsController < ApplicationController def upload_tags @user = User.find(params[:user_id]) - @upload_reports = Reports::UploadTags.for_user(params[:user_id]).order("id desc").paginate(params[:page], :limit => params[:limit]) + @upload_reports = Reports::UploadTags.includes(versions: [:post]).for_user(params[:user_id]).order("id desc").paginate(params[:page], :limit => params[:limit]) end end diff --git a/app/logical/reports/upload_tags.rb b/app/logical/reports/upload_tags.rb index 72867c29d..57cb52277 100644 --- a/app/logical/reports/upload_tags.rb +++ b/app/logical/reports/upload_tags.rb @@ -29,9 +29,9 @@ module Reports def uploader_tags_array @uploader_tags ||= begin - added_tags = [] - PostArchive.where(post_id: id, updater_id: uploader_id).each do |version| - added_tags += version.changes[:added_tags] + uploader_versions = versions.select { |p| p.updater_id == uploader_id } + added_tags = uploader_versions.flat_map do |version| + version.changes[:added_tags] end added_tags.uniq.sort end diff --git a/app/models/post.rb b/app/models/post.rb index a7ecaad99..dddb595d9 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -48,6 +48,11 @@ class Post < ActiveRecord::Base has_many :children, lambda {order("posts.id")}, :class_name => "Post", :foreign_key => "parent_id" has_many :disapprovals, :class_name => "PostDisapproval", :dependent => :destroy has_many :favorites, :dependent => :destroy + + if PostArchive.enabled? + has_many :versions, lambda {order("post_versions.updated_at ASC, id ASC")}, :class_name => "PostArchive", :dependent => :destroy + end + attr_accessible :source, :rating, :tag_string, :old_tag_string, :old_parent_id, :old_source, :old_rating, :parent_id, :has_embedded_notes, :as => [:member, :builder, :gold, :platinum, :janitor, :moderator, :admin, :default] attr_accessible :is_rating_locked, :is_note_locked, :as => [:builder, :janitor, :moderator, :admin] attr_accessible :is_status_locked, :as => [:admin] @@ -1408,14 +1413,6 @@ class Post < ActiveRecord::Base end module VersionMethods - def versions - if PostArchive.enabled? - PostArchive.where(post_id: id).order("updated_at ASC, id asc") - else - raise "Archive service not configured" - end - end - def create_version(force = false) if new_record? || rating_changed? || source_changed? || parent_id_changed? || tag_string_changed? || force create_new_version