0

我按照 GoRails 教程在 ActionText 中使用 @mentions。我想自动向任何@提及的用户发送电子邮件,以提醒他们对话。我认为这在 Rails 中是微不足道的,但找不到任何关于如何做到这一点的文档。

有谁知道这将如何实现?

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

4

4 回答 4

2

我不是 100%,但这是一个你可以玩的想法。由于本教程将嵌入对象添加到富文本对象中,因此您可以在模型中执行以下操作:

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
于 2019-06-02T15:14:32.707 回答
0

根据您的描述,我相信您希望拥有一个能够执行以下操作的综合功能:

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

这只是在不使用任何第三方接口的情况下实现此功能的一种简单方法。即使你要使用ActionTextin Trix edior,你至少需要具备以下能力

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

如果我的评论的任何部分在此处不清楚,请告诉我您是否需要更多详细信息。

于 2019-06-02T12:21:44.797 回答
0

我将 ActionText @mentions 与被注意到的 gem 集成,以向被提及的用户发送电子邮件或短信。似乎工作得很好。如上所述,我提取了每篇文章中提到的用户:

body.body.attachments.select{|a| a.attachable.class==User}.map(&:attachable).uniq
于 2020-10-08T01:19:11.900 回答
0

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

源代码好像

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
于 2019-12-03T09:53:18.717 回答