2013-04-09 22 views
8

için dizeleri TimeZone listesi I Kullanıcı modeline TIME_ZONE dize ekler Ryan Bate'nın railscast # 106 http://railscasts.com/episodes/106-time-zones-revised takip ettik. dize açılır listeden: Ben ofset ortak bir zaman dilimini paylaşan kullanıcılar sorgulamak için çalışıyorumActiveSupport :: ofset

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

(yani belirli bir saatte her gün onlara e-posta gönderebilir).

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

Belirli bir ofset için saat dilimi adlarının listesini alamadım. Sınırlı bir başarı ile TzInfo ve ActiveSupport :: TimeZone.zones_map ile tinkering oldum. zones_map benim ihtiyaçlarını karşılamak mümkün olmalıdır gibi hissediyorum, ama ben ondan istediğiniz verileri elde etmek mümkün olmamıştır (orada görüyorum rağmen!).

Yanlış yaklaşımı burada mı ele alıyorum? GMT ofsetini kullanıcı yerine depolayabileceğimi düşünüyordum ve bu şekilde sorguladım?

Benim google-fu Bu konuda bana yüzüstü bıraktı.

cevap

15

i çözdüm -

tz_names = ActiveSupport::TimeZone.zones_map.values.collect{|z| z.name if z.utc_offset == offset}.compact 
+2

Çok güzel! Btw, 'kompakt!' Eğer bir değişkene atamadan, bu nedenle şu – MTarantini

+0

sadece 'kompakt' olmak ya da 5.1+ http://api.rubyonrails.org/v5.1/classes/ActiveSupport/TimeZone.html için eşleme bakabilirsiniz beri –

İlgili konular