From e4efe446e66034a4387225e6fca56bb4e7a3e9e0 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 12 Apr 2025 11:45:34 +0200 Subject: [PATCH] Simlpe callback is actually enough Since the Comment already knows about the card. --- app/models/comment.rb | 15 +++++++++------ app/models/concerns/messageable.rb | 4 ---- app/models/message.rb | 2 -- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/app/models/comment.rb b/app/models/comment.rb index d6f29ae33..1d9ca3038 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -11,12 +11,7 @@ class Comment < ApplicationRecord scope :belonging_to_card, ->(card) { joins(:message).where(messages: { card_id: card.id }) } before_destroy :cleanup_events - - # Called when a new comment is captured as a message during creation - def created_via_message - card.watch_by creator - card.track_event :commented, comment_id: id - end + after_create_commit :creator_watches_card, :track_commenting_on_card def to_partial_path "cards/#{super}" @@ -28,4 +23,12 @@ class Comment < ApplicationRecord # Delete events that reference directly in particulars Event.where(particulars: { comment_id: id }).destroy_all end + + def creator_watches_card + card.watch_by creator + end + + def track_commenting_on_card + card.track_event :commented, comment_id: id + end end diff --git a/app/models/concerns/messageable.rb b/app/models/concerns/messageable.rb index 987cbf784..219ee1197 100644 --- a/app/models/concerns/messageable.rb +++ b/app/models/concerns/messageable.rb @@ -7,8 +7,4 @@ module Messageable has_one :message, as: :messageable, touch: true, dependent: :destroy has_one :card, through: :message end - - def created_via_message - # Overwrite in Messageable class - end end diff --git a/app/models/message.rb b/app/models/message.rb index 73dda5fde..7d950b3b7 100644 --- a/app/models/message.rb +++ b/app/models/message.rb @@ -3,7 +3,5 @@ class Message < ApplicationRecord delegated_type :messageable, types: Messageable::TYPES, inverse_of: :message, dependent: :destroy - after_create -> { messageable.created_via_message } - scope :chronologically, -> { order created_at: :asc, id: :desc } end