Skip to content

Range filters for "date" field broken after #4504 #4533

@bartoszkopinski

Description

@bartoszkopinski

I believe #4504 breaks filtering for date fields.
This is a resulting query for a range 2016-05-02 - 2016-05-02:

SELECT  1 AS count_column FROM "dates" WHERE ("dates"."starts_on" >= '2016-05-01 23:00:00.000000' AND "dates"."starts_on" < '2016-05-03') LIMIT 30 OFFSET 0

It tries to use date time ranges for date fields resulting in timezone conversion.
Then 2016-05-01 23:00:00.000000 gets downcasted to 2016-05-01 and the results are invalid.

My temporary workaround was to monkeypatch these two methods:

ActiveAdmin::Inputs::Filters::DateRangeInput.class_eval do
  def gt_input_name
    case column&.type
    when :date
      "#{method}_gteq"
    else
      "#{method}_gteq_date"
    end
  end

  def lt_input_name
    case column&.type
    when :date
      "#{method}_lteq"
    else
      "#{method}_lteq_date"
    end
  end
end

Let me know if you need more details

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions