原创作者: hideto   阅读:679次   评论:0条   更新时间:2011-05-26    
以前我们这样使用TimeZone:
class TasksController < ApplicationController
  def create
    task = account.tasks.build(params[:task])
    task.alert_at = current_user.time_zone.local_to_utc(task.alert_at)
    task.save!
  end
end

每次我们需要使用时区转换时我们都要写类似task.alert_at = current_user.time_zone.local_to_utc(task.alert_at)的语句

我们可以试试tztime插件,它将set_timezone的逻辑脱离出来:
class ApplicationController < ActionController::Base
  around_filter :set_timezone

  private
    def set_timezone
      TzTime.zone = current_user.time_zone
      yield
      TzTime.reset!
    end
end

class Task < ActiveRecord::Base
  tz_time_attributes :alert_at
end

class TasksController < ApplicationController
  def create
    task = account.tasks.create(params[:task])
  end
end

这样我们不用每次都调用set_timezone,我们用tz_time_attributes来声明哪些属性使用TzTime即可
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

文章信息

Global site tag (gtag.js) - Google Analytics