我在 Rails 中有一个记录列表,这些记录有一个布尔字段,可以将它们设为公共或私有。每当updated_at >= 30 天前,我需要一种将每条公共记录更改为私有的方法。
我不知道从哪里开始。欢迎任何建议、链接和提示。谢谢!
解决方案
根据@lol007 的建议,我每次使用 gem 时都会使用。我遵循的步骤是:
- 创建一个带有表格的应用程序 Post title:string content:text status:boolean 并在服务器第一次运行以添加信息,然后停止服务器并继续其他步骤。
- 将 gem 添加到我的 gemfile 并运行 bundle install。
- 随时运行。在控制台中创建 config/schedule.rb 文件
在 models/post.rb 中添加下一个代码:
def self.check_updated_at where('updated_at < ?', 30.minutes.ago).update_all({ :status => :true }) end
在 config/schedule.rb 中添加下一个代码:
every 3.minutes do runner "Post.check_updated_at" end
因为我在开发中工作,所以我运行下一个命令:
$ whenever --update-crontab --set environment='development'
然后检查我的 cron 是否工作,我运行下一个命令:
$ crontab -l
我的最后一步是运行 rails 服务器并开始运行我的应用程序。
我在测试中使用的其他行是:
$ whenever -w
在生产中生成 cron 文件。和
$ crontab -r
要删除 cron 文件,什么时候不是我想要的。
谢谢大家的时间和投入。