From 6db391f6a288b9b42be5342e3305a59bd7620f17 Mon Sep 17 00:00:00 2001 From: albert Date: Fri, 22 Feb 2013 21:13:11 -0500 Subject: [PATCH] fixes to post flag logic --- app/models/post.rb | 13 +++++++++---- app/models/post_flag.rb | 2 +- script/fixes/002.sql | 2 ++ 3 files changed, 12 insertions(+), 5 deletions(-) create mode 100644 script/fixes/002.sql diff --git a/app/models/post.rb b/app/models/post.rb index 4662a4ea0..d019b5331 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -208,7 +208,7 @@ class Post < ActiveRecord::Base raise PostFlag::Error.new(flag.errors.full_messages.join("; ")) end - update_column(:is_flagged, true) + update_column(:is_flagged, true) unless is_flagged? end def appeal!(reason) @@ -740,6 +740,7 @@ class Post < ActiveRecord::Base Post.transaction do update_column(:is_deleted, true) update_column(:is_pending, false) + update_column(:is_flagged, false) give_favorites_to_parent update_children_on_destroy update_parent_on_destroy @@ -865,8 +866,12 @@ class Post < ActiveRecord::Base where("is_pending = ?", true) end + def flagged + where("is_flagged = ?", true) + end + def pending_or_flagged - where("(is_pending = true OR (is_flagged = true and is_deleted = false))") + where("(is_pending = ? or is_flagged = ?)", true, true) end def undeleted @@ -895,9 +900,9 @@ class Post < ActiveRecord::Base def available_for_moderation(hidden) if hidden.present? - where("id IN (SELECT pd.post_id FROM post_disapprovals pd WHERE pd.user_id = ?)", CurrentUser.id) + where("posts.id IN (SELECT pd.post_id FROM post_disapprovals pd WHERE pd.user_id = ?)", CurrentUser.id) else - where("id NOT IN (SELECT pd.post_id FROM post_disapprovals pd WHERE pd.user_id = ?)", CurrentUser.id) + where("posts.id NOT IN (SELECT pd.post_id FROM post_disapprovals pd WHERE pd.user_id = ?)", CurrentUser.id) end end diff --git a/app/models/post_flag.rb b/app/models/post_flag.rb index cfc9ba5fc..6ca0389d8 100644 --- a/app/models/post_flag.rb +++ b/app/models/post_flag.rb @@ -46,7 +46,7 @@ class PostFlag < ActiveRecord::Base extend SearchMethods def update_post - post.update_column(:is_flagged, true) + post.update_column(:is_flagged, true) unless post.is_flagged? end def validate_creator_is_not_limited diff --git a/script/fixes/002.sql b/script/fixes/002.sql new file mode 100644 index 000000000..24adbdab6 --- /dev/null +++ b/script/fixes/002.sql @@ -0,0 +1,2 @@ +set statement_timeout = 0; +update posts set is_flagged = false where is_deleted = true and is_flagged = true;