У меня есть приложение Rails 5.1 и форма поиска Ransack с выпадающим списком, содержащим некоторые столбцы базы данных.Один из столбцов - finish_date и имеет значения в формате, например, «2007-12-31».В поле ввода мне нужно ввести точно полную дату, чтобы получить совпадение, но я хочу изменить поведение, так как оно принимает только год в качестве входного значения.
Как я могу передать пользовательский предикат, который преобразуетвходное значение от полной даты, например.2007-12-31 только год?
Я ищу Ransack-эквивалент для запроса sql:
SELECT *
FROM imagecapturing
WHERE YEAR(finish_date) = 2007
Моя форма Ransack:
<%= search_form_for @search do |f| %>
<%= f.grouping_fields(f.object.new_grouping) do |g| %>
<%= g.condition_fields(g.object.new_condition) do |c| %>
<%= c.predicate_select only: %i(cont not_eq eq) %>
<%= c.value_fields do |v| %>
<%= v.text_field :value %>
<% end %>
<% end %>
<% end %>
<%= f.submit "filter" %>
<% end %>
в моем контроллере:
@search = Imagecapturing.ransack params[:q]
@imagecapturings = @search.result.page params[:page]