У меня есть модель «Запрос», у которой есть общие атрибуты create_at и updated_at, но есть другие атрибуты datetime: insert_at и response_deadline. Моя проблема, в частности, связана с response_deadline, который иногда хранится с правильным часовым поясом, а иногда с другим (wtf ??), а в других случаях response_deadline с тем же часовым поясом дает правильное время даты, а другое - неправильное время даты.
Мой application.rb настроен с правильным часовым поясом:
config.time_zone = 'Brasilia'
и я уже пытался изменить часовой пояс по умолчанию AR:
config.active_record.default_timezone = :utc or :local
Другая проблема заключается в том, что если я поставлю :local
, то проблема в response_deadline будет решена, но другие атрибуты даты и времени получатся неправильными.
Часовой пояс и дата на сервере тоже правильные.
Иногда response_deadline хранится так:
response_deadline: "2018-11-01 02:00:00"
- НЕПРАВИЛЬНО
и тому подобное:
response_deadline: "2018-11-01 03:00:00"
- ПРАВИЛЬНО
И странное поведение, два явно неправильных часовых пояса:
response_deadline: "2018-11-09 02:00:00"
- НЕПРАВИЛЬНО
response_deadline: "2018-10-30 02:00:00"
- ПРАВИЛЬНО?
но когда я бегу по рельсам c:
2.3.0 :002 > request1.response_deadline
=> Thu, 08 Nov 2018 23:00:00 -03 -03:00
2.3.0 :002 > request2.response_deadline
=> Tue, 30 Out 2018 00:00:00 -02 -02:00
- Данные взяты из CSV-файла (загружен), а response_deadline имеет следующий формат:
29/10/2018 23:59:59
Фрагмент контроллера:
uploaded_file = params[:file]
unsaved = []
begin
sheet = RubyXL::Parser.parse(uploaded_file.tempfile.path)
dados = sheet[0]
demandas = []
(4...(dados.sheet_data.rows.size - 1)).each do |num|
if !dados.sheet_data.rows[num][1].nil?
request_type = RequestType.has_request_type? dados.sheet_data.rows[num][3].value,Request.sources[:ouv]
demanda = {
protocol: dados.sheet_data.rows[num][2].value,
source_cd: Request.sources[:ouv],
request_type_id: request_type,
created_at: dados.sheet_data.rows[num][7].value,
inserted_at: Time.now,
response_deadline: dados.sheet_data.rows[num][8].value,
requester_name: dados.sheet_data.rows[num][21].value.blank? ? "Anônimo" : dados.sheet_data.rows[num][21].value,
hide_requester_information: nil,
all_completed_information: false
}
demandas << demanda
end
end
count = 0
demandas.each_with_index do |demanda, index|
request = Request.new(demanda)
request.requester = Requester.where(name: "eouv").take
if request.valid? && !request.request_type_id.nil?
if request.save
...
Почему ?? Я действительно хочу понять, что происходит ... = /
- Все атрибуты имеют дату и время, включая, конечно,
:response_deadline
.
Окружающая среда:
Кто-то может помочь попытаться определить, что происходит?
ps: несколько дней назад этого не происходило.