Rails 3.2观察模型的日期属性

时间:2013-06-02 10:42:57

标签: ruby-on-rails attributes observers

我有一个可以保存几个日期的模型。现在我正在寻找一个观察日期的permament观察者,如果其中一个日期到期(与今天的日期相比),那么我想执行一些操作(例如将此日期保存到另一个名为ExpiredDate的模型)。

我看到Rails Observer只能在创建,删除或更新新内容后观察模型。有什么方法可以永久地观察模型属性吗?

1 个答案:

答案 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