Touch board when publication is created or destroyed (#2674)

Publishing or unpublishing a board didn't bust the `json.cache! board`
fragment cache because `Board::Publication` didn't touch its parent
board. The board's `updated_at` stayed stale, so subsequent GET requests
continued serving cached JSON without `public_url`.
This commit is contained in:
Rob Zolkos
2026-03-09 13:59:57 -04:00
committed by GitHub
parent 9585d13f5f
commit a896b0a9e6
2 changed files with 15 additions and 1 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
class Board::Publication < ApplicationRecord
belongs_to :account, default: -> { board.account }
belongs_to :board
belongs_to :board, touch: true
has_secure_token :key
end
+14
View File
@@ -42,6 +42,20 @@ class Board::PublishableTest < ActiveSupport::TestCase
end
end
test "touch board when publication is created" do
assert_changes -> { boards(:writebook).reload.updated_at } do
boards(:writebook).publish
end
end
test "touch board when publication is destroyed" do
boards(:writebook).publish
assert_changes -> { boards(:writebook).reload.updated_at } do
boards(:writebook).unpublish
end
end
test "publish doesn't create duplicate publications" do
boards(:writebook).publish
original_publication = boards(:writebook).publication