如何在delete
之後的某個對象某個時間之後是created
?Rails:創建後10分鐘後刪除對象?
我以爲它會是什麼樣的?但我該如何安排這一行動?
after_create :destroy_essay
def destroy_essay
# 10minutes later
# self.destroy
end
如何在delete
之後的某個對象某個時間之後是created
?Rails:創建後10分鐘後刪除對象?
我以爲它會是什麼樣的?但我該如何安排這一行動?
after_create :destroy_essay
def destroy_essay
# 10minutes later
# self.destroy
end
這實際上是後臺工作一個完美的工作。我肯定會推薦使用Sidekiq
它甚至可以提供一種在未來的一定時間內完成工作的方法。 https://github.com/mperham/sidekiq/wiki/Scheduled-Jobs
EssayDestroyer.perform_at(10.minutes.from_now)
在您EssayDestroyer
工人你然後寫代碼來執行銷燬您創建的文章。
你或許應該寫這個rake任務,並使用cron,或者如果你在Heroku,Heroku的調度運行它。
在模型中添加一個作用域,例如expired
,它返回10分鐘以前的所有項目,然後在耙子任務執行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) }