aboutsummaryrefslogtreecommitdiffstats
path: root/actiontext
diff options
context:
space:
mode:
Diffstat (limited to 'actiontext')
-rw-r--r--actiontext/app/models/action_text/rich_text.rb2
-rw-r--r--actiontext/test/unit/model_test.rb9
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