2013-02-04 23 views
0

在我User模式,我有顯示時間的方法:通過應用控制器和一個自定義rake任務設置Time.zone

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在我的耙子任務循環每個用戶(每小時cron作業),然後調用同樣的方法:

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

如何確保兩個時區設置不會互相干擾?

我希望display_time方法始終使用通過應用程序控制器設置的Time.zone,除非它是從cron任務循環中調用的。我怎樣才能做到這一點?

在此先感謝!

回答

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 

從你的耙子任務發送你想要的current_time

相關問題