Я использую Ransack для поиска в базе данных с несколькими полями. Со стороны представления, я предварительно заполняю значения полей по умолчанию в моей форме поиска предыдущим запросом, который доступен в представлении, из контроллера как @q, используя search_form_for @ q.
На протяжении всегоформа, это работает успешно, но моё поле с именем delete_eq всегда возвращает nil, когда я пытаюсь получить к нему доступ с помощью f.object.deleted_eq, чтобы проверить значение. Это несмотря на то, что другие значения запроса поля возвращаются правильно в том же месте, используя тот же формат, например, fobject.line_type_eq.
Является ли «удалено» специальным именем поля в Ransack? Все поля в моем запросе работают должным образом в контроллере, чтобы вернуть правильные результаты.
Изменение имени «удаленного» потребует переноса базы данных и большого количества изменений кода в проекте, поэтому я надеюсь,чтобы проверить, является ли это зарезервированным именем, прежде чем я внесу все эти изменения для тестирования.
Правка для получения дополнительной информации: Rails 5.2.1, Ransack 2.0.1
Удалено_eq - это выпадающий список, выполненный с помощью f.select с описательными именами текстовых опций, которые сопоставлены с «true», «false» и «». Так что да, в конечном итоге я считаю, что Рэнсак воспринимает это как логическое значение.
<%= f.select :deleted_eq, options_for_select([['Active Records', 'false'],
['Deleted Records Only', 'true'], ['Active and Deleted Records', '']],
f.object.deleted_eq || 'false'), {}, { :class => 'form-control',
:onChange => "searchOnchange();" } %>