diff --git a/app/controllers/bubbles/recovers_controller.rb b/app/controllers/bubbles/recovers_controller.rb index 5fccfeef2..530592762 100644 --- a/app/controllers/bubbles/recovers_controller.rb +++ b/app/controllers/bubbles/recovers_controller.rb @@ -2,8 +2,6 @@ class Bubbles::RecoversController < ApplicationController include BubbleScoped, BucketScoped def create - if bubble = Bubble.recover_recently_abandoned_creation(Current.user) - redirect_to bubble - end + redirect_to @bubble.recover_abandoned_creation end end diff --git a/app/models/bubble/statuses.rb b/app/models/bubble/statuses.rb index ef9c82a7c..7c01ed012 100644 --- a/app/models/bubble/statuses.rb +++ b/app/models/bubble/statuses.rb @@ -7,15 +7,13 @@ module Bubble::Statuses scope :published_or_drafted_by, ->(user) { where(status: :published).or(where(status: :drafted, creator: user)) } end - class_methods do - def recently_abandoned_creation(user) - creating.where(creator: user).where("created_at != updated_at").where(updated_at: 1.day.ago..).last - end + def can_recover_abandoned_creation? + abandoned_creations.where(updated_at: 1.day.ago..).any? + end - def recover_recently_abandoned_creation(user) - recently_abandoned_creation(user).tap do |bubble| - creating.where(creator: user).excluding(bubble).destroy_all - end + def recover_abandoned_creation + abandoned_creations.last.tap do |bubble| + Bubble.creating.where(creator: creator).excluding(bubble).destroy_all end end @@ -29,4 +27,9 @@ module Bubble::Statuses end end end + + private + def abandoned_creations + Bubble.creating.where(creator: creator).where("created_at != updated_at").excluding(self) + end end diff --git a/app/views/bubbles/show.html.erb b/app/views/bubbles/show.html.erb index 6204ebfb1..b9e940bb6 100644 --- a/app/views/bubbles/show.html.erb +++ b/app/views/bubbles/show.html.erb @@ -1,7 +1,7 @@ <% @page_title = @bubble.title %> <% content_for :header do %> - <% if @bubble.creating? && (abandoned = Bubble.recently_abandoned_creation(Current.user)) && abandoned != @bubble %> + <% if @bubble.can_recover_abandoned_creation? %>