我正试图找到一种方法,我可以告诉ransack在涉及日期或日期范围的查询中使用特定时区。例如,ransack默认使用UTC进行日期时间搜索,我想使用PST时区执行查询,我该怎么做?有任何黑客或配置?以下是生成的示例查询。
SELECT DISTINCT“orders”。* FROM“orders”LEFT OUTER JOIN“customers”ON“customers”。“id”=“orders”。“customer_id”LEFT OUTER JOIN“payment”ON“payment”。“order_id” =“orders”。“id”LEFT OUTER JOIN“order_lines”ON“order_lines”。“order_id”=“orders”。“id”WHERE“orders”。“test_transaction”='f'AND((“order”。“ created_at“> ='2012-11-03 07:00:00.000000'和”orders“。”created_at“< ='2012-11-05 06:59:59.000000'))
由于
答案 0 :(得分:1)
不确定Ransack的细节,但通常如果您将UTC日期存储在数据库中,那么您应该按UTC值进行查询。
如果您的查询日期是太平洋时间,那么在将它们传递给您的查询之前将它们转换为UTC。您可以使用诸如timezone,TZInfo或ActiveSupport::TimeZone之类的Ruby gem进行转换。
答案 1 :(得分:0)
有点脏,但有效
current_zone = Time.zone.name # Get default time zone
Time.zone = "UTC" #Change to whatever time zone you want.
@search = Model.search(params[:q])
@objects = @search.result
Time.zone = current_zone #Set default time zone
检查http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html#method-i-local_to_utc
中的时区