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