Как заставить фильтры даты в Rails Admin следовать часовому поясу приложения Rails? - PullRequest
1 голос
/ 16 июня 2019

У меня есть приложение Rails и я использую Rails Admin для бэк-офиса. У меня в часовом поясе моего приложения установлено значение «Мельбурн», но его фильтры даты показывают результаты только в формате UTC. Как я могу изменить это поведение в соответствии с часовым поясом приложения?

Я рассмотрел эту проблему, эту проблему и эту проблему, но не могу найти способ изменить фильтры, такие как "сегодня" работать с часовым поясом приложения.

Я установил часовой пояс приложения на application.rb - config.time_zone = 'Melbourne'. Столбцы Datetime выглядят хорошо в Rails Admin (они показывают время Мельбурна на created_at и updated_at), но фильтры, такие как «сегодня», показывают результаты только в UTC.

Это приводит к тому, что фильтры даты будут корректными только после 0000 UTC, в результате чего команда получит неверную информацию с платформы. Любые советы о том, как с этим разобраться, были бы замечательными.

1 Ответ

0 голосов
/ 17 июня 2019

Я думаю, мы можем попробовать:

ШАГ 1:

IN rails_admin.rb file

require 'rails_admin/config/fields/base'

module RailsAdmin
  module Config
    module Fields
      module Types
        class Datetime < RailsAdmin::Config::Fields::Base
          def value
            value_in_default_time_zone = bindings[:object].send(name)
            return nil if value_in_default_time_zone.nil?
            pacific_time_zone = ActiveSupport::TimeZone.new('YOUR_TIMEZONE')
            value_in_default_time_zone.in_time_zone(pacific_time_zone)
          end
        end
      end
    end
  end

ШАГ 2:

IN config/envirements/production.rb

добавить две строки

config.time_zone = 'YOUR_TIMEZONE'
config.active_record.default_timezone = 'YOUR_TIMEZONE'
...