ユーザーがワークアウトを追跡できる 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