-
Notifications
You must be signed in to change notification settings - Fork 72
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
カレンダーアプリ上で定期イベントの開始・終了時間が UTC 基準になる問題を修正 #8288
Conversation
def parse_event_time(event_date, event_time) | ||
tz = ActiveSupport::TimeZone['Asia/Tokyo'] | ||
|
||
time = event_time ? event_time.strftime('%H:%M') : '00:00' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
📝 上記コードの170・172行目は、以下の理由により削除しました。
- タイムゾーンは Rails 側の設定 ( config/application.rb ) で東京を指定している。
- 引数で受け取る event_time ( 実体は定期イベントの start_at 、end_at ) が nil になることは考えにくい。( バリデーションも設定されている )
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
PRどうもありがとうございます!!
もし以前の実装が不具合だったのであれば、「修正前は失敗するが、修正後はパスするテストコード」も追加してもらえるとありがたいです〜 (model testでOK)
test '#format_event_date' do | ||
test '#transform_for_subscription' do |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
📝 format_event_date
メソッドが命名変更されて transform_for_subscription
メソッドになったようなので、テスト名も合わせるように変更しました ( 命名変更時のコミット )
@JunichiIto |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
修正ありがとうございます!よさそうですー 🙆♂️
@komagata
駒形さんもレビューお願いします 🙏
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
PRしてくださってありがとうございます!!
Issue
概要
イベント購読機能を利用してカレンダーアプリに FBC のイベント予定を取り込んだ際、定期イベントの開始時間がユーザーのタイムゾーン(日本)と異なっている問題を修正しました。
原因
定期イベントは特別イベントと異なり、開催する"時間"の情報しか持っていないため購読される際に"年/月/日"も加えた完全な日付を作成する必要があります。
以下のコードで完全な日付の作成を行ってますが、
local_to_utc
メソッドにより時刻の基準が UTC へ変更されているため、該当箇所を削除しました。bootcamp/app/models/regular_event.rb
Lines 169 to 176 in 1a9a8d3
また、上記のメソッドはイベント購読処理でのみ利用されているため他のコードへの影響は無いと思われます。
変更確認方法
bug/start_time_of_regular_event_is_shifted
をローカルに取り込むforeman start -f Procfile.dev
を実行し、任意のユーザーでログインする定期イベントページ にアクセスする
任意の定期イベントに参加する
画面右上にある
イベント購読ボタン
をクリックし、カレンダーアプリへ取り込むカレンダー上で表示される定期イベントの時間が FBC 上の定期イベントの時間と同じになっている
Screenshot
以下は、定期イベントである「Everyday Rails輪読会 ( 17:00 ~ 18:00 ) 」に参加した場合のカレンダーアプリ上の表示になります。
修正前
予定に表示されている時間が 8:00 になっている。( UTC 基準での時刻 )
修正後
予定に表示されている時間が 17:00 になっている。( 東京での時刻 )