2016-04-01 16 views
0

'a bağlı olarak rails sorgusu Kullanıcı zaman dilimi (EST) temelinde sorgulama yapmam gerekiyor, şu anda UTC alıyor. Kullanıcının bir tarih aralığı seçtiği bir tarih aralığı filtresine sahibim, buna karşılık gelen sonuçlara göre gösterilir.Kullanıcı Zaman Dilimi

Ben

Tarih aralığı arama için Ransack mücevher kullanıyorum - 2016/03/01 2016/03/31 için

Sonuçları

görünmemesi gereken 29 Feb olarak gösterir UTS, gösterilmektedir

enter image description here

Formu görünüyor

.well 
    = simple_form_for(:report, url: report_create_path, method: :get, html: { class: 'form-horizontal'}) do |f| 
    = f.simple_fields_for(:q) do |r| 
     = r.input :created_at_gteq, label: 'From', required: false, as: :bootstrap_datepicker 
     = r.input :created_at_lteq, label: 'To', required: false, as: :bootstrap_datepicker 
gibiBurada ofset kullanmam gerekiyor mu yoksa varsayılan ransack varsayılan yöntemleri bu özelliği sunuyor mu?

cevap

0

Bu, projemde kullandığım şeydir. Bu ransack mücevher kullanmadıysanız ve bunun yerine postgresql ait MongoDB kullanılan, ancak yine de proje ile çalışması gerekir:

start_date = DateTime.strptime(params[:created_at_gteq], "%m/%d/%Y").change(offset: Time.zone.formatted_offset).utc 
end_date = DateTime.strptime(params[:created_at_lteq], "%m/%d/%Y").change(offset: Time.zone.formatted_offset).end_of_day.utc 

Şimdi benim veritabanında, her zaman UTC datetime saklar. Veritabanında olup olmadığından emin değil. Aksi takdirde, satırların sonunda .utc'u UTC'ye dönüştürmek için kaldırın.