Update a card's created_at when it is published

ref: https://app.fizzy.do/5986089/cards/2854
This commit is contained in:
Mike Dalessio
2025-11-17 17:35:12 -05:00
parent 695037c7ee
commit 97a6916ae1
2 changed files with 24 additions and 0 deletions
+8
View File
@@ -4,6 +4,7 @@ module Card::Statuses
included do
enum :status, %w[ drafted published ].index_by(&:itself)
before_save :update_created_at_on_publication
after_create -> { track_event :published }, if: :published?
scope :published_or_drafted_by, ->(user) { where(status: :published).or(where(status: :drafted, creator: user)) }
@@ -15,4 +16,11 @@ module Card::Statuses
track_event :published
end
end
private
def update_created_at_on_publication
if will_save_change_to_status? && status_in_database.inquiry.drafted?
self.created_at = Time.now
end
end
end
+16
View File
@@ -51,4 +51,20 @@ class Card::StatusesTest < ActiveSupport::TestCase
assert_equal card, event.eventable
assert_equal "card_published", event.action
end
test "created_at is updated when the card is published" do
Current.session = sessions(:david)
freeze_time
card = travel_to 1.week.ago do
boards(:writebook).cards.create! creator: users(:kevin), title: "Newly created card"
end
assert card.drafted?
assert_equal 1.week.ago, card.created_at
card.publish
assert_equal Time.now, card.created_at
end
end