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天的帖子,其他答案也可能会起作用,但是我希望数据库中包含我将在应用程序上使用的干净数据。