2024.10.01
【勉強】ミドルウェア・アプリケーションのEOL・EOSLについて学んでみた
2016.01.29
プログラミングRailsのarel_tableでタイムゾーンの扱いが変
GTラボ坂東です。
Railsのタイムゾーンにハマったので共有します。
joinやら複雑なSQLを書くとき、arel_tableを使っています。
どうしてもタイムゾーンの設定通りに動かないパターンが有り3時間ほどハマったので共有します。
だいたいこんなコードを書いていました。
設定
config.time_zone = ‘Tokyo’
config.active_record.default_timezone = :local
システムとMySQLはUTC
SQLを作るとこ
table = Table.arel_table
sql = Table.project(
Table[:created_at].as(‘viewdate’),
)
viewで表示するとこ
= table[:viewdate].strftime(“%H:%M ”)
結果、UTCのまま表示される。
この一箇所のみUTCで、他で使ってるstrftimeは問題なくTokyoで表示される。
3時間ハマってどうしようもねえな、自分で+9:00するかと思ってふとSQL生成のとこを
table = Table.arel_table
sql = Table.project(
Table[:created_at].as(‘created_at’),
)
にしたら、Tokyoで表示されるようになりました。
違うのはasの中身だけ。
「created_at」ってカラム名決め打ちでタイムゾーンを処理するif文でもあるんでしょうね。
理由はわかるけどちょっときもい。
おわり。
【記事への感想募集中!】
記事への感想・ご意見がありましたら、ぜひフォームからご投稿ください!【テクノデジタルではエンジニア/デザイナーを積極採用中です!】
下記項目に1つでも当てはまる方は是非、詳細ページへ!Qangaroo(カンガルー)
【テクノデジタルのインフラサービス】
当社では、多数のサービスの開発実績を活かし、
アプリケーションのパフォーマンスを最大限に引き出すインフラ設計・構築を行います。
AWSなどへのクラウド移行、既存インフラの監視・運用保守も承りますので、ぜひご相談ください。
詳細は下記ページをご覧ください。
最近の記事
タグ検索