自动更改postRails的状态

在我的rails应用程序中,我有一个工作模型,我希望状态在管理员批准30天后自动更改为“已存档”这可能吗? 如果是这样的话怎么办?

当它进入批准状态时,我会将名为“archive_time”的属性添加为日期时间。 然后,您可以设置rake任务以设置存档状态以及archive_time过去的位置。 这可能如下所示:

jobs = Job.where("state = ? and archive_time >= ?", 'approved', Time.now) jobs.each {|job| job.archive } 

然后安排rake任务每天运行一次。 我会用cron来实现这个目的。

rake任务或后台作业(例如“活动作业”或“延迟作业”)可以执行此操作,但在这种情况下您可能不需要它们。 如果要处理数据库中的时间戳,则可以创建范围或方法以将作业标记为已存档。

例如,如果您有一个名为approved_at的列是datetime 。 批准作业时,设置approved_at = Time.now

现在,您可以创建一个方法来指示作业是否已存档:

 def is_archived? approved_at && approved_at < Time.now - 30.days end 

要获取所有已归档的作业,您可以创建一个范围:

 scope :archived, -> { where('approved_at IS NOT NULL AND approved_at