我按照 GoRails 教程在 ActionText 中使用 @mentions。我想自动向任何@提及的用户发送电子邮件,以提醒他们对话。我认为这在 Rails 中是微不足道的,但找不到任何关于如何做到这一点的文档。
有谁知道这将如何实现?
GoRails:https ://gorails.com/episodes/at-mentions-with-actiontext
我按照 GoRails 教程在 ActionText 中使用 @mentions。我想自动向任何@提及的用户发送电子邮件,以提醒他们对话。我认为这在 Rails 中是微不足道的,但找不到任何关于如何做到这一点的文档。
有谁知道这将如何实现?
GoRails:https ://gorails.com/episodes/at-mentions-with-actiontext
我不是 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
根据您的描述,我相信您希望拥有一个能够执行以下操作的综合功能:
@ + username
(-您需要文本区域键盘键入事件侦听器和特殊字符模式条件识别@ + username
)@ + username
模糊搜索相关的所有用户(-您需要创建一个支持按用户名搜索的用户列表 API,并在使用 输入文本区域时让 F/E 请求此 API @ + username
)@mention
下拉列表中选择用户(- 纯 F/E 行为,只需要另一个事件侦听器来检测用户选择并将所选用户名注入该文本区域。@mention
用户(这里需要AB/E功能。评论后你的服务器会有这个对话数据,服务器需要检查对话是否包含任何@mention
部分,如果有,则查找相关用户,@mention
并通过直接使用 Mailer 或间接使用 mail Worker 向用户发送电子邮件。)这只是在不使用任何第三方接口的情况下实现此功能的一种简单方法。即使你要使用ActionText
in Trix edior
,你至少需要具备以下能力
@mention
并至少为 B/E 中的这些用户发送邮件。如果我的评论的任何部分在此处不清楚,请告诉我您是否需要更多详细信息。
我将 ActionText @mentions 与被注意到的 gem 集成,以向被提及的用户发送电子邮件或短信。似乎工作得很好。如上所述,我提取了每篇文章中提到的用户:
body.body.attachments.select{|a| a.attachable.class==User}.map(&:attachable).uniq
有一个关于这个主题的 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