我有一位客户抱怨发送电子邮件提醒。所以我查看了代码,我认为有几个地方我可以尝试解决。
提醒电子邮件控制器,其中:
onecoreuap\drivers\wdm\bluetooth\user\winrt\device\bluetoothledevice.cpp(728)\Windows.Devices.Bluetooth.dll!00007FFC1601AE2F: (caller: 00007FFC1602081A) Exception(1) tid(212c) 80070005 Access is denied.
用户控制器包括:
class Admin::ReminderEmailsController < Admin::ApplicationController
def edit
@system_email = SystemEmail.first
end
def update
@system_email = SystemEmail.first
flash[:notice] = 'System Email updated successfully' if @system_email.update_attributes(system_email_params)
respond_with @system_email, location: admin_system_emails_path
end
private
def system_email_params
params.require(:system_email)
.permit(:reminder_content)
end
end
培训提醒工作
def send_training_email(user)
future_date = DateTime.current + 10.days
TrainingReminderJob.set(wait_until: future_date).perform_later(user)
end
我倾向于把训练提醒工作弄得一团糟,因为它似乎是最不具侵略性的。只是在表演中添加足够吗?:
class TrainingReminderJob < ApplicationJob
queue_as :default
def perform(user)
UserAgentMailer.training_reminder(user).deliver_later
end
end
答案 0 :(得分:0)
通常,您可以向User模型添加一个布尔列,例如skip_reminder_email
,并通过您的UI使其可以更改为admin和/或用户。然后在send_training_email
方法中对其进行测试。
$ rails g migration AddSkipReminderEmailToUser skip_reminder_email:boolean
$ rake db:migrate
然后在你的方法中:
def send_training_email(user)
unless user.skip_reminder_email
future_date = DateTime.current + 10.days
TrainingReminderJob.set(wait_until: future_date).perform_later(user)
end
end
同样,您需要管理员或用户将skip_reminder_email
布尔值更新为true或false的方法。但是,要在开发中进行测试,您只需从rails控制台更新标志:
irb> User.find(user_id).update(skip_reminder_email: true)
然后在调用send_training_email
的UsersController中运行控制器操作。