diff --git a/app/models/bubble/engageable.rb b/app/models/bubble/engageable.rb index 73cc7837b..514b7ba98 100644 --- a/app/models/bubble/engageable.rb +++ b/app/models/bubble/engageable.rb @@ -4,25 +4,31 @@ module Bubble::Engageable included do has_one :engagement, dependent: :destroy, class_name: "Bubble::Engagement" - scope :doing, -> { joins(:engagement) } - scope :considering, -> { where.missing(:engagement) } + scope :doing, -> { active.joins(:engagement) } + scope :considering, -> { active.where.missing(:engagement) } end def doing? - engagement.present? + active? && engagement.present? end def considering? - !doing? + active? && !doing? end def engage unless doing? - create_engagement! + transaction do + unpop + create_engagement! + end end end def reconsider - engagement&.destroy + transaction do + unpop + engagement&.destroy + end end end diff --git a/app/models/bubble/poppable.rb b/app/models/bubble/poppable.rb index 974e26ec8..bfa2fa8fb 100644 --- a/app/models/bubble/poppable.rb +++ b/app/models/bubble/poppable.rb @@ -28,6 +28,10 @@ module Bubble::Poppable pop.present? end + def active? + !popped? + end + def popped_by pop&.user end