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