我试图找到一种方法,我可以告诉ransack在涉及日期或日期范围的查询中使用特定的时区。例如,ransack默认使用UTC进行日期时间搜索,我想使用PST时区执行查询,我该如何做呢?是否有任何hack或配置?下面是生成的查询示例:
SELECT DISTINCT "orders"。*从"orders"左外连接"customers"到"customers"。"id" = "订单"customer_id" LEFT OUTER JOIN "payments" ON "payments"。"order_id"="订单"。LEFT OUTER JOIN "order_lines" ON "order_lines"。"order_id"="订单"。"id" WHERE "orders"。"test_transaction" = " f " AND ("orders")。"created_at">= '2012-11-03 07:00:00.000000' AND "orders"。"created_at"& lt; = ' 2012-11-05 06:59:59.000000 '))
谢谢
不确定Ransack的具体细节,但通常如果您在数据库中存储UTC日期,那么您应该通过UTC值进行查询。
如果您的查询日期是太平洋时间,那么在将它们传递到您的查询之前将它们转换为UTC。您可以使用Ruby gem(如timezone、TZInfo或activessupport:: timezone)来进行转换。
它有点脏,但可以工作
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