在活动记录模型中动态设置时区



我有一个模型 - 可以说Event具有starts_at DateTime列。事件模型具有列Time_zone(必需(,可以保存您获得它。

我正在动态设置控制器中的时区。但是,如果我在模型中有一个辅助方法,那就说started?

def started?
  starts_at <= Time.zone.now
end

这将返回应用程序配置的时区。

我可以这样做:

def started?
  Time.zone = time_zone
  starts_at <= Time.zone.now
end

这会解决这个问题 - 但是有什么更好的方法可以做到这一点吗?对于整个型号?

def started?
 starts_at <= Time.now.in_time_zone(time_zone)
end

在模型中定义它

class Event < ActiveRecord::Base
  # model stuff
  def started?
    Time.zone = self.time_zone
    self.starts_at <= Time.zone.now
  end
end

然后您可以以

访问它
@event.started?

最新更新