首页 > 解决方案 > 如何使用 ransack 检查 DateTime 字段是否为空白

问题描述

我试过查询

<%= f.select :ends_at_blank, [true, false], {:include_blank => "All"}, class: "show-tick" %>

但它会产生 sql 错误:

PG::InvalidDatetimeFormat: ERROR:  invalid input syntax for type timestamp: ""
LINE 1: ...nds_at" IS NOT NULL AND "activities"."ends_at" != '')) LIMIT...
                                                             ^
: SELECT  "activities".* FROM "activities" LEFT OUTER JOIN "users" ON "users"."id" = "activities"."user_id" WHERE ("users"."user_type" ILIKE '%WPD - SURV/MGR%' AND ("activities"."ends_at" IS NOT NULL AND "activities"."ends_at" != '')) LIMIT $1 OFFSET $2

因为它正在检查空白字符串以及 nil - ''

标签: ruby-on-railsactiverecordransack

解决方案


答案是使用 _null 而不是 _blank

<%= f.select :ends_at_null, [true, false], {:include_blank => "All"}, class: "show-tick"  %>

推荐阅读