我的Web应用程序需要运行6个不同的cron作业,以便在每个时区的00:01:00更新表中的时区敏感数据。我想为每个时区创建rake任务。我可以将rake任务配置为可识别时区吗?例如,我可以在rake任务中执行以下操作:
namespace :db do
task :update_EST_records => :environment do
Time.zone = "Eastern Time (US & Canada)"
sql = "UPDATE QUERY GOES HERE WITH CREATED_AT BETWEEN ? AND ?"
ActiveRecord::Base.establish_connection
ActiveRecord::Base.connection.execute(sql,
Time.zone.now.beginning_of_day.utc,
Time.zone.now.end_of_day.utc)
end
end
答案 0 :(得分:2)
是的,你可以。由于:update_EST_records
取决于:environment
任务,因此您可以访问所有Rails环境。
只要您从模型类而不是原始SQL运行更新查询,您甚至不必调用ActiveRecord::Base.establish_connection
。
Model.update_all("...", ["CREATED_AT BETWEEN ? AND ?", value, value])