Можно ли отправить электронное письмо пользователям, которые упоминаются в rails ActionText?
Я следовал руководству GoRails по использованию @mentions в ActionText. Я хочу автоматически отправлять электронное письмо любому @ упомянутому пользователю, чтобы предупредить его о разговоре. Я бы предположил, что это тривиально в Rails, но не могу найти никакой документации о том, как это сделать.
Кто-нибудь знает, как это будет сделано?
GoRails: https://gorails.com/episodes/at-mentions-with-actiontext
0 ответов
Я не на 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
пользователи после комментирования беседы (здесь необходима функция A B/E. После комментирования на вашем сервере будут храниться эти данные беседы, и сервер должен проверить, содержит ли@mention
раздел, если таковой имеется, то найдите пользователя, связанного с этим@mention
и отправьте электронное письмо пользователю, напрямую используя Mailer или косвенно используя Mail Worker.)
Это всего лишь один простой способ реализовать эту функцию без использования стороннего интерфейса. Даже если вы собираетесь использовать ActionText
в Trix edior
нужно хотя бы иметь способности
- предоставление API для возврата результатов поиска в списке пользователей
- и отправка писем для тех,
@mention
пользователи в B / E как минимум.
Дайте мне знать, если вам нужно больше подробностей, если какая-либо часть моего комментария не ясна здесь.
Я интегрировал ActionText @mentions с замеченным драгоценным камнем, чтобы отправлять электронные письма или текстовые сообщения упомянутым пользователям. Кажется, работает очень хорошо. Как обсуждалось выше, я вытащил пользователей, упомянутых в каждом сообщении, с помощью:
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