特定の時間帯にのみ表示されるフード トラックの注文ページを作成しようとしています。おそらく可能であることはわかっていますが、それを実装する方法がわかりません。時間は、ユーザーの現地時間ではなく、「リアルタイム」(おそらく GMT など) に基づいている必要があります。
私はコントローラーで考えています。「リアルタイム」をチェックし、時間枠内にある場合は1ページをレンダリングし、時間が時間枠外にある場合は別のページをレンダリングします。
前もって感謝します!
特定の時間帯にのみ表示されるフード トラックの注文ページを作成しようとしています。おそらく可能であることはわかっていますが、それを実装する方法がわかりません。時間は、ユーザーの現地時間ではなく、「リアルタイム」(おそらく GMT など) に基づいている必要があります。
私はコントローラーで考えています。「リアルタイム」をチェックし、時間枠内にある場合は1ページをレンダリングし、時間が時間枠外にある場合は別のページをレンダリングします。
前もって感謝します!
これには RailsTime
メソッドが役立ちます。コントローラー アクションに直接ドロップできるコード スニペットの例を次に示します。
now = Time.now
start_of_day = now.at_midnight
time_at_noon = start_of_day + 43200 # 12hr * 60min * 60sec
if now > time_at_noon
render template: "after_noon"
else
render template: "before_noon"
end
もちろん、解析しようとしている時間に基づいて計算を行う必要があります。
また、このロジックを複数のコントローラーに適用する場合は、おそらくこれをモジュールに抽象化することを検討する必要があります。
更新:
すべての時間を UTC に正規化したい場合は、タイムゾーンを明示的に宣言するブロック内に上記のスニペット全体をラップする必要があります (当然、目的のローカル時間を UTC に変換する必要があります)。
Time.use_zone('UTC') do
# above code goes here
end