From db0bcf08b9220649356dbf1b7ceb1386758a0d99 Mon Sep 17 00:00:00 2001 From: evazion Date: Mon, 3 Apr 2017 13:30:13 -0500 Subject: [PATCH] Post#approve!: move approving logic to post_approval.rb. --- app/models/post.rb | 16 ++-------------- app/models/post_approval.rb | 8 ++++++++ 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/app/models/post.rb b/app/models/post.rb index 2f6042605..328c36ad1 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -321,20 +321,8 @@ class Post < ActiveRecord::Base end end - def approve! - flags.each {|x| x.resolve!} - self.is_flagged = false - self.is_pending = false - self.is_deleted = false - self.approver_id = CurrentUser.id - - PostApproval.create(user_id: CurrentUser.id, post_id: id) - - if is_deleted_was == true - ModAction.log("undeleted post ##{id}") - end - - save! + def approve!(approver = CurrentUser.user) + approvals.create!(user: approver) end def approved_by?(user) diff --git a/app/models/post_approval.rb b/app/models/post_approval.rb index 86d4e0206..26abd3705 100644 --- a/app/models/post_approval.rb +++ b/app/models/post_approval.rb @@ -3,6 +3,7 @@ class PostApproval < ActiveRecord::Base belongs_to :post, inverse_of: :approvals validate :validate_approval + after_create :approve_post def self.prune! where("created_at < ?", 1.month.ago).delete_all @@ -21,4 +22,11 @@ class PostApproval < ActiveRecord::Base errors.add(:base, "You have previously approved this post and cannot approve it again") end end + + def approve_post + ModAction.log("undeleted post ##{id}") if post.is_deleted + + post.flags.each(&:resolve!) + post.update({ approver: user, is_flagged: false, is_pending: false, is_deleted: false }, without_protection: true) + end end