0

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

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

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

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

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

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

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

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

提前致谢!

4

1 回答 1

0

使 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

从您的 rake 任务中,发送current_time您想要的。

于 2013-02-04T16:02:52.950 回答