1

在我的应用程序中,我想根据用户触发操作的时间每两周调用一次操作。我想令人困惑的是为什么似乎没有直接的方法来做到这一点。

理想情况下,重复作业将设置在模型中,而不是其他文件中。例如,whenevergem 有以下说明

入门

$ cd /apps/my-great-project

$ wheneverize .

这将为您创建初始config/schedule.rb文件。

但我不想把我的日程安排在那里。我希望时间表出现在我的模型中。时间表不是由我设置的,而是由我的用户设置的。

有没有直接的方法来实现这一点?几个星期以来,我一直被这件事难住了。

4

1 回答 1

0

您可以使用延迟作业。

http://asciicasts.com/episodes/171-delayed-job

您的用户可以定义存储在您的模型中的作业。您将创建第一个延迟作业,并且在每个完成的作业之后您可以开始一个新的延迟作业。

如果您的用户创建了一个应该在凌晨 3:00 运行的作业并且他在下午 3:00 保存了该作业,那么您需要创建第一个作业:

Delayed::Job.enqueue(CronJob.new(params[:id]), 1, 12.hours.from_now ) 

在开始这项工作之前,您将创建下一个工作

Delayed::Job.enqueue(CronJob.new(params[:id]), 1, 1.days.from_now )
于 2013-09-16T12:06:32.970 回答