diff options
Diffstat (limited to 'actiontext')
-rw-r--r-- | actiontext/app/models/action_text/rich_text.rb | 2 | ||||
-rw-r--r-- | actiontext/test/unit/model_test.rb | 9 |
2 files changed, 10 insertions, 1 deletions
diff --git a/actiontext/app/models/action_text/rich_text.rb b/actiontext/app/models/action_text/rich_text.rb index 19fa3e030e..1a3ffdfa27 100644 --- a/actiontext/app/models/action_text/rich_text.rb +++ b/actiontext/app/models/action_text/rich_text.rb @@ -15,7 +15,7 @@ module ActionText has_many_attached :embeds before_save do - self.embeds = body.attachables.grep(ActiveStorage::Blob) if body.present? + self.embeds = body.attachables.grep(ActiveStorage::Blob).uniq if body.present? end def to_plain_text diff --git a/actiontext/test/unit/model_test.rb b/actiontext/test/unit/model_test.rb index af53f88caa..c2c3ccaaec 100644 --- a/actiontext/test/unit/model_test.rb +++ b/actiontext/test/unit/model_test.rb @@ -44,6 +44,15 @@ class ActionText::ModelTest < ActiveSupport::TestCase assert_equal [ActiveStorage::Attachment], message.content.embeds.map(&:class) end + test "embed extraction deduplicates file attachments" do + blob = create_file_blob(filename: "racecar.jpg", content_type: "image/jpg") + content = ActionText::Content.new("Hello world").append_attachables([ blob, blob ]) + + assert_nothing_raised do + Message.create!(subject: "Greetings", content: content) + end + end + test "saving content" do message = Message.create!(subject: "Greetings", content: "<h1>Hello world</h1>") assert_equal "Hello world", message.content.to_plain_text |