ActiveSupport::TimeZone список строк для смещения

Я следил за Railscast #106 Райана Бейта http://railscasts.com/episodes/106-time-zones-revised, который добавляет строку time_zone в модель User. Строка из выпадающего списка:

= f.time_zone_select :time_zone, ActiveSupport::TimeZone.us_zones

Я пытаюсь запросить всех пользователей, которые имеют общее смещение часового пояса (чтобы я мог отправлять им электронное письмо в определенное время каждый день).

User.where(:time_zone => ['Guadalajara','Central America','Mexico City', 'Monterrey', 'Saskatchewan'])

Мне не удалось получить список имен часовых поясов для определенного смещения. Я возился с TzInfo и ActiveSupport::TimeZone.zones_map с ограниченным успехом. Мне кажется, что zone_map должна удовлетворить мои потребности, но я не смог получить от нее нужные мне данные (хотя я вижу их там!).

Я использую неправильный подход здесь? Я думал, что вместо этого могу сохранить смещение по Гринвичу для пользователя и запросить таким образом?

Мой гугл-фу подвел меня в этом вопросе.


person Shauno    schedule 09.04.2013    source источник


Ответы (1)


я понял это --

tz_names = ActiveSupport::TimeZone.zones_map.values.collect{|z| z.name if z.utc_offset == offset}.compact
person Shauno    schedule 09.04.2013
comment
Очень хорошо! Между прочим, не нужно использовать слово «компактный»! так как вы назначаете его переменной, поэтому он может быть просто «компактным» - person MTarantini; 22.03.2016
comment
Или посмотрите сопоставление для 5.1+ api.rubyonrails.org/v5.1 /classes/ActiveSupport/TimeZone.html - person Robin Gomez; 30.09.2017