代码之家  ›  专栏  ›  技术社区  ›  reto

searchlogic无法为datetime条件正确转换时间

  •  0
  • reto  · 技术社区  · 16 年前

    searchlogic的作者说,它被委托给a::r转换器,但至少在我们的例子中,这并没有涵盖通常的情况。当地时间被“解释”为UTC,因此被移动了一小时(CET)。

    我该怎么做?

    我加上我们目前的解决办法作为一个答案,希望它能帮助一些人!

    1 回复  |  直到 16 年前
        1
  •  1
  •   reto    16 年前

    我们已将以下方法添加到应用程序控制器:

      protected
      def parse_datetime_fields(hash, key)
        value = hash[key]
        return unless value
        hash[key] = Time.zone.parse(value)
      end
    

    然后在创建searchlogic对象之前,我们“预处理”params散列:

    if params[:search]
      parse_datetime_fields(params[:search], :begin_greater_than)
      parse_datetime_fields(params[:search], :begin_less_than)
    end
    
    @search = Record.search(params[:search])
    

    我们非常感谢任何更清晰、更好、更好的解决方案/想法:)!

    我们的环境.rb:

      config.time_zone = 'Bern'
      config.active_record.default_timezone = :utc
    
    推荐文章