undefined метод begin_of_day для строки с пользовательским фильтром Ransacker - PullRequest
0 голосов
/ 24 мая 2018

Я получаю ниже упомянутую ошибку.Любая идея, как я могу это исправить?

undefined method `beginning_of_day' for "2018-01-01":String
/lib/ransack_ext.rb
config.add_predicate old, arel_predicate: current
end
config.add_predicate 'gteq_datetime',
arel_predicate: 'gteq',
formatter: ->(v) { v.beginning_of_day }

Код:

Projects.rb (ActiveAdmin)

filter :project_event_date, label: 'By Project Event Date', as: :date_range

Project.rb (модель)

 has_many :project_events, dependent: :destroy

 ransacker :project_event_date do
  "project_events.event_date"
 end

Ответы [ 4 ]

0 голосов
/ 15 марта 2019

Приведение поля от даты к дате в источнике данных решило проблему для меня

0 голосов
/ 24 мая 2018

Сначала преобразуйте строку в дату, затем примените метод begin_of_day следующим образом: -

Date.parse("2018-01-01").beginning_of_day
0 голосов
/ 07 июня 2018

это поможет вам

ruby ransacker :project_event_date, type: :date do Arel.sql("project_events.event_date") end

Результат блока Ransacker должен быть построен с использованием Arel, как это показано на Использование Ransacker Guide

active_admin имеет пользовательский форматировщик для предиката, например
formatter: proc { |v| v.beginning_of_day }
, поэтому вам нужно преобразовать переданное значение в дату

. Лучший способ будет предоставить type или formatter для Ransacker

0 голосов
/ 24 мая 2018

В соответствии с документами , beginning_of_day():

Преобразует дату в время (или, если необходимо, в DateTime) с частью времени, установленной на начало дня (0:00)

A String не является Date.Итак, конвертируйте ваш String в Date и вам будет хорошо идти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...