Dee*_*yal 2 timezone datetime ruby-on-rails ruby-on-rails-4
我想在当前用户登录的时区中显示其他用户创建的日期时间。
我碰到过
config.time_zone = 'Central Time (US & Canada)' and
config.active_record.default_timezone = :local
Run Code Online (Sandbox Code Playgroud)
但是,如何将其设置为当前登录用户的时区,它将保存其他用户在其时区中保存的日期时间,并查看其特定时区中的其他用户?
在您的中考虑此代码ApplicationController
。
before_action :user_time_zone, :if => :current_user
def user_time_zone(&block)
Time.use_zone(current_user.time_zone, &block)
end
Run Code Online (Sandbox Code Playgroud)
它将当前请求包装为Time.use_zone( current_user.time_zone )
,这会将应用程序的当前时区设置为整个请求的当前用户所在的时区,并且应该使您所有的时间都显示在当前用户所在的时区中,除非专门转换为时区。
我从这篇文章中拿走了
class ApplicationController < ActionController::Base
around_filter :set_time_zone
def set_time_zone
if logged_in?
Time.use_zone(current_user.time_zone) { yield }
else
yield
end
end
end
Run Code Online (Sandbox Code Playgroud)
http://api.rubyonrails.org/v4.2.5.2/classes/Time.html#method-c-zone-3D