在我的 Rails 应用程序中,我想暂时停止为特定用户发送电子邮件(例如,当我因配额而被退回时),直到用户确认他能够再次接收电子邮件。
我对所有邮件类都有一个共同的超类。我总是setup_email
在发送邮件之前调用一个方法。
打电话的最佳地点在哪里@user.mail_suspended?
?
这是一些简化的示例应用程序,我使用 Rails 2.3:
# Common super class for all Mailers
class ApplicationMailer < ActionMailer::Base
protected
def setup_mail(user)
@recipients = user.email
@from = ...
end
end
# Specific Mailer for User model
class UserMailer < ApplicationMailer
def message(user, message)
setup_mail(user)
@subject = "You got new message"
@body[:message] = message
end
end
# Use the UserMailer to deliver some message
def MessagesController < ApplicationController
def create
@message = Message.new(params[:message])
@message.save
UserMailer.deliver_message(@message.user, @message)
redirect_to ...
end
end