创建后30天后销毁帖子

use*_*ils 1 ruby ruby-on-rails ruby-on-rails-4

出于学习目的,我创建了一个博客,现在我想在其创建30天后自动销毁该帖子。我该怎么做?

这是我的帖子控制器

  def index
    @posts = Post.all
  end
  def create
    @post = current_user.posts.new(post_params)
    @post.save
    redirect_to posts_path
  end
  def destroy
    @post.destroy
     redirect_to posts_path
  end
Run Code Online (Sandbox Code Playgroud)

小智 5

我会成立一个任务,只要在每周1天。

生成任务:

rails g task posts delete_30_days_old
Run Code Online (Sandbox Code Playgroud)

然后在创建的文件(lib / tasks / posts.rb)上,添加以下代码:

namespace :posts do
  desc "TODO"
  task delete_30_days_old: :environment do
    Post.where(['created_at < ?', 30.days.ago]).destroy_all
  end
end
Run Code Online (Sandbox Code Playgroud)

当然,这是如果您要删除超过30天的帖子,其他答案也可能会起作用,但是我希望数据库中包含我将在应用程序上使用的干净数据。