0

私のUserモデルには、時間を表示するメソッドがあります。

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

Time.zoneアプリケーション コントローラーの before フィルターでユーザーごとに設定してから、display_timeメソッドを呼び出しています。

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

また、rake タスク (1 時間ごとの cron ジョブ) でループ内の各ユーザーを設定Time.zoneし、同じメソッドを呼び出しています。

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

2 つのタイム ゾーン設定が互いに干渉しないようにするにはどうすればよいですか?

メソッドが cron タスクのループから呼び出される場合を除いて、アプリケーション コントローラーを介してdisplay_time常にセットを使用するようにします。Time.zoneどうすればこれを達成できますか?

前もって感謝します!

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 に答える