Ruby on rails 日期筛选在Rails上不起作用-Ransack,Activeadmin
我的应用程序使用Rails、Activeadmin和Ransack 最近,我注意到日期筛选功能无法正常工作。我还检查了与Activeadmin分离的控制器,问题仍然存在。这可能是一个洗劫问题吗 日志表明参数被正确传递,并且它们仍然在URL中。。计数工作正常,但实际查询没有发生。你知道这里会发生什么吗?我最近确实升级到了Ruby 2.2,但我不确定这是否相关 以下是参数: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
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后您会注意到这一点。您是如何解决的?我也有同样的问题