【发布时间】:2016-07-16 23:50:37
【问题描述】:
我正在尝试在 Rails 中实现正确的时区处理。
每个用户都有不同的时区,因此每个用户的时区都存在于数据库中。
问题:当我创建一个用户时,我将我从客户端获得的信息传递到时区。
用户有一些像created这样的字段,但是我想在创建用户时保存正确的时间,而在更新模型时不。
这是我的模型:
require 'securerandom'
class User
include Mongoid::Document
include Mongoid::Paperclip
field :created, type: Time
field :time_zone, type: String
def set_created
self.created = Time.now.in_time_zone(self.time_zone)
end
end
这是应用程序控制器:
class ApplicationController < ActionController::API
include ActionController::HttpAuthentication::Token::ControllerMethods
around_filter :set_time_zone
def current_user
return unless params[:user_id]
@current_user ||= User.find(params[:user_id])
end
private
def set_time_zone(&block)
time_zone = current_user.try(:time_zone) || 'UTC'
Time.use_zone(time_zone, &block)
end
end
我设置了around_filter,但我不知道如何将time_zone 参数传递给它。 Currentuser 不起作用,因为未创建用户。
【问题讨论】:
标签: ruby-on-rails ruby api timezone