delete
之后如何created
某个对象的某些时间?
我觉得它会是这样的?但是我该如何安排这个行动?
after_create :destroy_essay
def destroy_essay
# 10minutes later
# self.destroy
end
答案 0 :(得分:1)
对于后勤工作者来说,这实际上是一项完美的工作。我绝对建议使用Sidekiq
它甚至提供了一种在未来一定时间后完成工作的方法。 https://github.com/mperham/sidekiq/wiki/Scheduled-Jobs
EssayDestroyer.perform_at(10.minutes.from_now)
在EssayDestroyer
工作人员上,然后编写要执行的代码以销毁您创建的文章。
答案 1 :(得分:0)
您应该为此编写rake任务,并使用cron,或者如果您使用Heroku,Heroku Scheduler来运行它。
在模型中添加范围,例如expired
,返回超过10分钟的所有项目,然后在rake任务中执行Essay.expired.destroy_all
并运行此任务,例如每隔一分钟。
这个耙子看起来像这样:
namespace :app do
desc "Remove expired essays"
task :remove_expired_essays => :environment do
Essay.expired.destroy_all
end
end
以及模型中的范围:
scope :expired, -> { where('created_at >= ?', 10.minutes.ago) }
答案 2 :(得分:0)
@methyl我认为正确的范围是scope :expired, -> { where('created_at <= ?', 10.minutes.ago) }
,不是吗?