From 40feeb2411a734aa7fcfcc46993c8e13d92e3fac Mon Sep 17 00:00:00 2001 From: evazion Date: Tue, 4 Apr 2017 20:18:32 -0500 Subject: [PATCH 1/2] Post#give_favorites_to_parent: fix exception (fixup 77793759) Forgot the `belong_to :user` association in 77793759. --- app/models/favorite.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/favorite.rb b/app/models/favorite.rb index f4c6b6b5e..bfa6ae6df 100644 --- a/app/models/favorite.rb +++ b/app/models/favorite.rb @@ -1,5 +1,6 @@ class Favorite < ActiveRecord::Base belongs_to :post + belongs_to :user scope :for_user, lambda {|user_id| where("user_id % 100 = #{user_id.to_i % 100} and user_id = #{user_id.to_i}")} attr_accessible :user_id, :post_id From c03aa79ece530caecac7f6c45d32f5a92b4b4118 Mon Sep 17 00:00:00 2001 From: evazion Date: Tue, 4 Apr 2017 20:31:20 -0500 Subject: [PATCH 2/2] Post#give_favorites_to_parent: wrap in transaction. Ensure that if anything fails then the entire favorites move will be rolled back. --- app/models/post.rb | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/models/post.rb b/app/models/post.rb index 4ef05b151..06d4cdbde 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -1282,9 +1282,11 @@ class Post < ActiveRecord::Base def give_favorites_to_parent return if parent.nil? - favorites.each do |fav| - remove_favorite!(fav.user) - parent.add_favorite!(fav.user) + transaction do + favorites.each do |fav| + remove_favorite!(fav.user) + parent.add_favorite!(fav.user) + end end end