Searchlogic не конвертирует время должным образом для условий даты и времени

Автор Searchlogic говорит, что он делегирован конвертеру A::R, но по крайней мере в нашем случае это не охватывало обычные случаи. Местное время было "интерпретировано" как UTC и поэтому было перенесено на один час (CET).

Как я могу сделать это правильно?

Я добавляю наш текущий обходной путь в качестве ответа, надеюсь, он кому-нибудь поможет!

1 ответ

Решение

Мы добавили следующий метод в контроллер приложения:

  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
Другие вопросы по тегам