0

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

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

4

1 回答 1

2

观察者只处理创建、更新和删除的原因是,您需要一些触发器来启动 Rails 中的任何操作。通常,这是用户的http请求。

要在时间基准上触发操作,您可以编写rake任务或使用rails/runner执行某些模型方法。

然后,您使用 cron 运行任务或脚本。
您可以使用 gemwhenever来处理 cron 作业。它还可以帮助您设置在 Rails 上运行 ruby​​ 的环境。
代替

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
于 2013-06-02T11:23:50.837 回答