Timezone 基本設定
config/environments/production.rb 等、各環境後とに・・・config.time_zone = "Tokyo"ApplicationController でのタイムゾーン設定
class ApplicationController < ActionController::Base before_filter :set_timezone def set_timezone Time.zone = session[:tz] if session[:tz] end endそして、ログインに使うコントローラーで session[:tz] を設定
class User::LoginController < UserRootController def index if request.post? if session[:user_id] = user.authenticate(params[:user][:email], params[:user][:password]) user = User.find(session[:user_id]) session[:tz] = user.time_zone if user.time_zone flash[:notice] = t('logged_in') if session[:return_to_path] redirect_to session[:return_to_path] else redirect_to user_root_path end else flash[:error] = t('login.failed') session[:user_id] = nil end end end end
その他色々便利なタイムゾーン系メソッド
特定のタイムゾーンで表示するsometime.in_time_zone("Hawaii") # @user.time_zone にユーザーのタイムゾーンが入っている場合 sometime.in_time_zone(@user.time_zone)
オフセット、またはタイムゾーン文字列からタイムゾーンを返す
※特定のタイムゾーンがRails に存在するかどうかチェックするのに便利。Cafetalkでは、旧システムからデータを移行する際に使用しました。
ActiveSupport::TimeZone['Tokyo'] > (GMT+09:00) Tokyo ActiveSupport::TimeZone[8] ActiveSupport::TimeZone[+8] > (GMT+09:00) Osaka
タイムゾーンの名前だけを表示
ActiveSupport::TimeZone[+8].name > Osakaオフセットを表示
Time.zone.utc_offset/3600 > -5 など。。。フォームでタイムゾーンのプルダウンリストを表示
<%= f.time_zone_select( :time_zone, nil, :include_blank => true) %>http://mad.ly/2008/04/09/rails-21-time-zone-support-an-overview/
http://marklunds.com/articles/one/402
http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html#M001513
0 件のコメント:
コメントを投稿