From 01ecc95f7d6e4541278cb4274a043d09fd991657 Mon Sep 17 00:00:00 2001 From: r888888888 Date: Tue, 19 Jul 2016 17:32:48 -0700 Subject: [PATCH] fixes #2624: Multiple @ mention dmails generated for the same comment --- app/logical/mentionable.rb | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/app/logical/mentionable.rb b/app/logical/mentionable.rb index a0034ec36..ea777d2e8 100644 --- a/app/logical/mentionable.rb +++ b/app/logical/mentionable.rb @@ -42,18 +42,22 @@ module Mentionable title = self.class.mentionable_option(:title) from_id = read_attribute(self.class.mentionable_option(:user_field)) text = strip_quote_blocks(read_attribute(self.class.mentionable_option(:message_field))) + bodies = {} text.scan(DText::MENTION_REGEXP).each do |mention| mention.gsub!(/(?:^\s*@)|(?:[:;,.!?\)\]<>]$)/, "") - user = User.find_by_name(mention) - body = self.class.mentionable_option(:body).call(self, user.name) + bodies[mention] = self.class.mentionable_option(:body).call(self, mention) + end + + bodies.each do |name, text| + user = User.find_by_name(name) if user dmail = Dmail.new( from_id: from_id, to_id: user.id, title: title, - body: body + body: text ) dmail.owner_id = user.id dmail.save