2

Я использую Ruby, Rails 2.1.2 и 4.1.4Сравнивая раз с часовыми поясами в рельсах

Т.Л., др; Я получаю время дата & от пользователя, который входит в контроллер из формы (через Params), как это:

pickuptime = params[:appointment][:pickuptime] 
(byebug) pickuptime 
"01/06/2015 7:26 PM" 

и мне нужно, чтобы убедиться, что в будущем, так что клиенты не могут создавать встречи в прошлом, и у меня есть time_zone клиента, хранящиеся в базе данных, потому что клиенты могут находиться в разных местах.

деталь:

Я получаю время в мой контроллер через форму:

pickuptime = params[:appointment][:pickuptime] 
(byebug) pickuptime 
"01/06/2015 7:26 PM" 

Я затем преобразовать его в DateTime так, что я могу создать запись назначение:

pickuptime = DateTime.strptime(pickuptime, "%m/%d/%Y %l:%M %p") 
@appointment = @car.appointments.build(garage_id: garage_id, pickuptime: pickuptime) 

У моей модели Appointment есть подтверждение, которое гарантирует, что вы не можете создать встречу в е прошлое:

def pickuptime_is_in_future 
    if pickuptime < Time.current 
    errors.add(:pickuptime, "Appointment must be in the future") 
    end 
end 

Я хотел бы принять во внимание TIME_ZONE клиента (@car.garage.time_zone), который хранится в базе данных, при создании назначения, например,

pry(main)> Garage.first.time_zone 
Garage Load (0.6ms) SELECT "garages".* FROM "garages" ORDER BY "garages"."id" ASC LIMIT 1 
=> "Eastern Time (US & Canada)" 

Сейчас это не работает. Когда я создаю назначение на 1 минуту в будущем, я получаю следующее:

(byebug) pickuptime 
Tue, 06 Jan 2015 19:22:00 UTC +00:00 
(byebug) Time.current 
Wed, 07 Jan 2015 00:21:53 UTC +00:00 

, который вызывает проверку на провал, несмотря на то, что назначение было создано в будущем, и, следовательно, должны добиться успеха.

Любое руководство относительно того, как правильно реализовать это, было бы высоко оценено!

ответ

Смежные вопросы