我希望用户每天能够发送不超过5封电子邮件。有可能验证吗?
user_mailer.rb
class UserMailer < ActionMailer::Base
def contact_email(from_email, body, to_email)
@body = body
@user = User.find_by(email: to_email)
mail(from: from_email, to: to_email, subject: '', cc: from_email)
end
end
users_controller.rb
def send_mail
@user = User.find(params[:id])
@body = params[:message]
UserMailer.contact_email(current_user.email, @body, @user.email).deliver_now
end
答案 0 :(得分:1)
您可以使用SentMail
和user_id
创建模型created_at
。
修改您的User
模型以包含has_many :sent_mails
然后按如下方式修改send_mail
方法。
def send_mail
@user = User.find(params[:id])
@body = params[:message]
if @user.sent_mails.last_day.count < 5
UserMailer.contact_email(current_user.email, @body, @user.email).deliver_now
@user.sent_mails.create
end
end
在您的SentMail
模型中,创建一个范围last_day
,用于创建以下查询where(created_at: 24.hours.ago..DateTime.now.utc)
SentMail
模型也是跟踪发送的电子邮件的好方法,如果您想要存储,交付,点击等电子邮件的状态,那么这种模式会很好。