Я создал приложение Ruby on Rails, где пользователи могут отслеживать тренировки.Они могут сделать это либо лично, либо публично.На общедоступных тренировках (workout.share == 1
) я разрешаю пользователям комментировать.Когда создается комментарий о тренировке, владелец тренировки получает уведомление по электронной почте.Это все прекрасно работает.
Сейчас я ищу несколько советов о том, как лучше всего получать уведомления по электронной почте от пользователей, которые прокомментировали тренировки.Вот пример.
Пользователь A создает тренировку 1. Пользователь B комментирует тренировку 1, а пользователь A получает уведомление по электронной почте.Пользователь C также комментирует Workout 1, и пользователь A и пользователь B получают уведомления по электронной почте.
Каков наилучший способ сообщить моему приложению, что нужно пройти через всех пользователей, которые прокомментировали Workout 1, и отправитьписьмо им?
В настоящее время я отправляю электронное письмо владельцу тренировки со следующим кодом в comments_controller (я понимаю, что это может быть более чистый код):
class CommentsController < ApplicationController
...
def create
@workout = Workout.find(params[:workout_id])
@comment = @workout.comments.build(params[:comment])
@comment.user = current_user
respond_to do |format|
if @comment.save
if @comment.workout.email_notification == 1
@comment.deliver_comment_notification_mail!
format.html { redirect_to( projects_path) }
format.js
else
format.html { redirect_to( projects_path) }
format.js
end
else
end
end
end
...
и в comment_mailer.rb
def comment_notification_mail(comment)
subject "Someone commented on your Workout"
recipients("#{comment.workout.user.username} <#{comment.workout.user.email}>")
from("foobar")
body :comment => comment,
:commenter => comment.user,
:workout => comment.workout,
:commentee => comment.workout.user,
:workout_url => workout_url(comment.workout),
:commenter_url => user_url(comment.user)
end