diff --git a/app/models/card.rb b/app/models/card.rb index 00a6312a2..2f6b0fe1e 100644 --- a/app/models/card.rb +++ b/app/models/card.rb @@ -11,6 +11,8 @@ class Card < ApplicationRecord has_markdown :description + before_save :set_default_title + scope :reverse_chronologically, -> { order created_at: :desc, id: :desc } scope :chronologically, -> { order created_at: :asc, id: :asc } scope :latest, -> { order updated_at: :desc, id: :desc } @@ -25,11 +27,12 @@ class Card < ApplicationRecord end end - def title=(new_title) - self[:title] = new_title.presence || "Untitled" - end - def cache_key [ super, collection.name ].compact.join("/") end + + private + def set_default_title + self.title = "Untitled" if published? && title.blank? + end end diff --git a/test/models/card_test.rb b/test/models/card_test.rb index dac35aa3d..94fc9ab86 100644 --- a/test/models/card_test.rb +++ b/test/models/card_test.rb @@ -120,4 +120,12 @@ class CardTest < ActiveSupport::TestCase assert_includes card.cache_key, ApplicationRecord.current_tenant, "cache key must always include the tenant" end + + test "for published cards, it should set the default title 'Untitiled' when not provided" do + card = collections(:writebook).cards.create! + assert_nil card.title + + card.publish + assert_equal "Untitled", card.reload.title + end end