【发布时间】:2016-08-08 17:31:11
【问题描述】:
我有一个在用户和项目之间关联的应用。当用户注册时,他们会收到一份快速调查。如果调查表明他们很适合我们的网站,他们将被授予访问权限并发送一封电子邮件,要求他们填写个人资料和项目信息。这是处理该操作的控制器。
class Admin::Users::GrantAccessesController < ApplicationController
def create
@user = User.find(params[:id])
if @user.update_attribute(:access_granted, true)
if params[:email] == "true"
@user.send_access_granted_email
end
redirect_to admin_users_path
else
redirect_to admin_users_path
end
end
我想设置一个命令,如果他们还没有填写他们的项目,它会在他们被授予访问权限 3 天后自动向他们发送电子邮件提醒。我只想通过电子邮件向他们发送一个提醒。
我有一些想法,希望大家能给我建议一个最好的选择。
-
每当 gem 用于设置 cron 作业(有问题,因为我只想发送一封电子邮件而不是无休止的电子邮件,直到他们更新他们的项目。我也不知道如何将 if 语句添加到 cron 作业)
every 1.day, :at => '4:30 am' do runner "Task.send_email" (if access granted and project not updated/created) end -
使用 UserMailer 发送电子邮件(如果没有项目,我不确定如何在授予访问权限后 3 天触发电子邮件发送)
# Sends project_reminder e-mail def send_project_reminder_email UserMailer.project_reminder(self).deliver_now end -
如果granted_access 更新,则在用户模型上添加如下内容以执行某些操作。
def update @model = Model.find(params[:id]) detect_changes if @model.update_attributes(params[:model]) send email if attr_changed? end end private def detect_changes @changed = [] @changed << :attr if @model.attr != params[:model][:attr] end def attr_changed? @changed.include :attr end这些解决方案似乎都不能真正解决整个问题。我认为步骤是
1) 授予访问权限后,标记用户在 3 天内查看。
2) 3 天后检查项目是否已更新。
3) 如果更新什么都不做,如果没有更新发送电子邮件。
我从来没有做过这样的事情,所以我很难找到解决方案。非常感谢您的建议!
【问题讨论】:
标签: ruby-on-rails ruby email cron