Ruby on rails 日期筛选在Rails上不起作用-Ransack,Activeadmin

Ruby on rails 日期筛选在Rails上不起作用-Ransack,Activeadmin,ruby-on-rails,activeadmin,ransack,Ruby On Rails,Activeadmin,Ransack,我的应用程序使用Rails、Activeadmin和Ransack 最近,我注意到日期筛选功能无法正常工作。我还检查了与Activeadmin分离的控制器,问题仍然存在。这可能是一个洗劫问题吗 日志表明参数被正确传递,并且它们仍然在URL中。。计数工作正常,但实际查询没有发生。你知道这里会发生什么吗?我最近确实升级到了Ruby 2.2,但我不确定这是否相关 以下是参数: Started GET "/admin/users?utf8=%E2%9C%93&q%5Bcreated_at_gte

我的应用程序使用Rails、Activeadmin和Ransack

最近,我注意到日期筛选功能无法正常工作。我还检查了与Activeadmin分离的控制器,问题仍然存在。这可能是一个洗劫问题吗

日志表明参数被正确传递,并且它们仍然在URL中。。计数工作正常,但实际查询没有发生。你知道这里会发生什么吗?我最近确实升级到了Ruby 2.2,但我不确定这是否相关

以下是参数:

Started GET "/admin/users?utf8=%E2%9C%93&q%5Bcreated_at_gteq%5D=2015-11-01&q%5Bcreated_at_lteq%5D=2015-11-30&q%5Brole_contains%5D=read&commit=Filter&order=id_desc" for 50.17.182.190 at 2015-11-13 05:16:52
 +0000
在这里,您可以看到SQL查询中从未使用过日期:

User Load (0.8ms)  SELECT  "users".* FROM "users"  WHERE ("users"."role" ILIKE '%read%')  ORDER BY "users"."id" desc LIMIT 30 OFFSET 0
完整日志如下:

Started GET "/admin/users?utf8=%E2%9C%93&q%5Bcreated_at_gteq%5D=2015-11-01&q%5Bcreated_at_lteq%5D=2015-11-30&q%5Brole_contains%5D=read&commit=Filter&order=id_desc" for 50.17.182.190 at 2015-11-13 05:16:52
 +0000
Processing by Admin::UsersController#index as HTML
  Parameters: {"utf8"=>"✓", "q"=>{"created_at_gteq"=>"2015-11-01", "created_at_lteq"=>"2015-11-30", "role_contains"=>"read"}, "commit"=>"Filter", "order"=>"id_desc"}
  User Load (0.4ms)  SELECT  "users".* FROM "users"  WHERE "users"."id" = 1  ORDER BY "users"."id" ASC LIMIT 1
   (0.4ms)  SELECT COUNT(*) FROM "users"  WHERE ("users"."role" ILIKE '%read%')
   (0.3ms)  SELECT COUNT(*) FROM "users"  WHERE ("users"."role" ILIKE '%read%') AND (created_at > '2015-11-01 00:00:00.000000')
   (0.3ms)  SELECT COUNT(*) FROM "users"  WHERE ("users"."role" ILIKE '%read%') AND (created_at > '2015-11-09 00:00:00.000000')
   (0.3ms)  SELECT COUNT(count_column) FROM (SELECT  1 AS count_column FROM "users"  WHERE ("users"."role" ILIKE '%read%') LIMIT 30 OFFSET 0) subquery_for_count
  CACHE (0.0ms)  SELECT COUNT(count_column) FROM (SELECT  1 AS count_column FROM "users"  WHERE ("users"."role" ILIKE '%read%') LIMIT 30 OFFSET 0) subquery_for_count
  CACHE (0.0ms)  SELECT COUNT(*) FROM "users"  WHERE ("users"."role" ILIKE '%read%')
  CACHE (0.0ms)  SELECT COUNT(count_column) FROM (SELECT  1 AS count_column FROM "users"  WHERE ("users"."role" ILIKE '%read%') LIMIT 30 OFFSET 0) subquery_for_count
  User Load (0.8ms)  SELECT  "users".* FROM "users"  WHERE ("users"."role" ILIKE '%read%')  ORDER BY "users"."id" desc LIMIT 30 OFFSET 0

我只是遇到了这样的问题。原来我是以美国格式(
mm-dd-yyyy
)提交日期的,但服务器将其解释为
yyy-mm-dd
dd-mm-yyyy
,这会导致您的日期以静默方式失败,并在rails/ruby处理后返回nil。我安装了,它修好了


Ruby内部(在
Date
DateTime
类中)用于处理美式日期,但社区已经决定(可能是正确的)美式日期对于国际用户来说不是一个好的默认值。这可能就是为什么升级ruby后您会注意到这一点。

您是如何解决的?我也有同样的问题