我创建了一个 Ruby on Rails 应用程序,用户可以在其中跟踪锻炼情况。可以私下或公开这样做。在公开的锻炼(workout.share == 1
)上,我允许用户发表评论。当对锻炼创建评论时,会通过电子邮件通知锻炼所有者。这一切都很好。
我现在正在寻找一些建议,以让对锻炼发表评论的用户也可以通过电子邮件收到通知。这是一个例子。
用户 A 创建锻炼 1。用户 B 对锻炼 1 发表评论,用户 A 收到电子邮件通知。用户 C 还对锻炼 1 发表评论,并且用户 A 和用户 B 都收到电子邮件通知。
告诉我的应用程序遍历所有评论过锻炼 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