是否可以通过电子邮件向在Rails ActionText中提到@的用户发送电子邮件?

时间:2019-06-01 06:02:47

标签: ruby-on-rails trix actiontext

我遵循了有关在ActionText中使用@mentions的GoRails教程。我想自动向任何@提到的用户发送电子邮件,以提醒他们对话。我认为这在Rails中是微不足道的,但是找不到有关如何执行的文档。

有人知道如何实现吗?

GoRails:https://gorails.com/episodes/at-mentions-with-actiontext

4 个答案:

答案 0 :(得分:2)

我不是100%,但是您可以使用以下方法。由于本教程将嵌入对象添加到RTF对象中,因此您可以在模型中执行以下操作:

has_rich_text :content

after_create do
  content.embeds.each do |embed|
    # now you have each embeded object, I guess you could use that sgid that
    # he name on the tutorial a few times to find if the embeded object is a 
    # user or something else, and then fire the email. I leave this part to 
    # you since I didn't actually tried ActionText yet, I just saw the 
    # tutorial and read parts of the code ;P
  end
end

答案 1 :(得分:0)

根据您的描述,我相信您希望获得全面的信息  该功能将执行以下操作:

  1. 在文本区域中检测@ + username(-您需要一个文本区域 键盘键入事件侦听器和特殊字符模式条件 识别@ + username
  2. 列出与您的@ + username模糊搜索相关的所有用户(-您需要创建一个用户列表API,并支持 按用户名搜索,并在任何时候让F / E向该API请求 使用@ + username在文本区域中输入
  3. 能够从@mention下拉列表中选择一个用户(-纯F / E行为,只需要另一个事件侦听器即可检测到用户 选择并将所选的用户名注入该文本区域。
  4. 在对会话发表评论后自动提醒@mention用户(-这里需要B / E功能。您的服务器将具有 评论后的对话数据,服务器需要检查 对话包含任何@mention节,如果有,则 查找与该@mention相关的用户,然后向该用户发送电子邮件 直接使用Mailer或间接使用mail Worker。)

这只是不使用任何第三方接口即可实现此功能的一种简单方法。即使您打算在ActionText中使用Trix edior,也需要在 至少具有

的能力
  1. 提供API以返回搜索到的用户列表结果
  2. 并至少为B / E中的@mention个用户发送邮件。

如果我的评论中有任何不清楚的地方,请告诉我是否需要更多详细信息。

答案 2 :(得分:0)

有关此主题的GoRails教程:https://gorails.com/episodes/notifications-action-text-user-mentions

看似source code

after_create :send_notifications

def send_notifications
  users = user_mentions
  users.each do |user|
    PostMailer.user_mention(self, user).deliver_now
  end
end

def user_mentions
  @users ||= body.body.attachments.select{ |a| a.attachable.class == User }.map(&:attachable).uniq
end

答案 3 :(得分:0)

我将ActionText @mentions与著名的gem集成在一起,以向所提及的用户发送电子邮件或文本消息。似乎工作得很好。如上所述,我通过以下方式拉出了每个帖子中提到的用户:

body.body.attachments.select{|a| a.attachable.class==User}.map(&:attachable).uniq