我有一个可以保存几个日期的模型。现在我正在寻找一个观察日期的permament观察者,如果其中一个日期到期(与今天的日期相比),那么我想执行一些操作(例如将此日期保存到另一个名为ExpiredDate的模型)。
我看到Rails Observer只能在创建,删除或更新新内容后观察模型。有什么方法可以永久地观察模型属性吗?
答案 0 :(得分:2)
原因是,观察者只对创建,更新和删除工作,你需要一些触发器来启动Rails中的任何操作。通常,这是用户的http请求。
要在时基上触发操作,您可以编写rake
任务或使用rails/runner
执行某些模型方法。
然后使用cron运行任务或脚本
您可以使用像whenever
这样的gem来处理cron作业。它还可以帮助您设置环境以在轨道上运行红宝石
而不是
10 0 * * * /bin/bash -l -c 'cd /home/user/rail-app/releases/20130522173433 && RAILS_ENV=production bundle exec rake my_rake_task --silent'
它将配置简化为
every :day, at: '0:10am' do
rake 'my_rake_task'
end