Ruby on rails - 通过应用程序控制器和自定义耙子任务设置 Time.zone



在我的User模型中,我有一个显示时间的方法:

def display_time
    puts "Time is: #{Time.zone.now}"
end

我在应用程序控制器的 before 过滤器中为每个用户设置Time.zone,然后调用 display_time 方法:

def my_before_filter
    Time.zone = current_user.time_zone
    current_user.display_time
end

我还在我的 rake 任务(每小时 cron 作业)的循环中为每个用户设置Time.zone,然后调用相同的方法:

Users.all.each do |user|
    Time.zone = user.time_zone
    user.display_time
end

如何确保两个时区设置不会相互干扰?

我希望 display_time 方法始终使用通过应用程序控制器设置的Time.zone,除非从 cron 任务的循环中调用它。我怎样才能做到这一点?

提前感谢!

Make display_time 采用时间参数。

def my_before_filter
  Time.zone = current_user.time_zone
  current_user.display_time(Time.zone.now)
end
# app/models/user.rb
def display_time(current_time)
  puts "Time is: #{current_time}"
end

从您的耙子任务中,发送您想要的current_time

相关内容

  • 没有找到相关文章

最新更新