Я пытаюсь добавить пользовательский фильтр в активный администратор, который может фильтровать статус по имени.Статус сохраняется в таблице заказов, где 0 или 1 представляют «ожидающие».Я использую ransacker для возврата отфильтрованных заказов, но это дает мне ошибку.
PG::UndefinedFunction: ERROR: operator does not exist: bigint
Может ли кто-нибудь помочь мне выяснить, как устранить эту ошибку?
Я пытался изменить мой Ransackметод, но безрезультатно.Вот мой код:
На странице администрирования заказов:
filter :status_str, label: "Order Status"
В модели заказов:
ransacker :status_str,
:formatter => -> (coupon_id) {
if (coupon_id == 'PENDING')
ids = Order.all.where("status = 0 OR status = 1").map(&:id)
else
ids = Order.all.map(&:id)
end
(ids.empty?) ? ids << 0: ids #activeadmin translates the queries into IN operator, may get syntax error if empty
# id = 0 is non-existent in Users as id >= 1
ids #maybe is not needed
} do |parent|
parent.table[:id]end
Я ожидаю, что отфильтрованные результаты будут показаны администратору.