Active Admin возвращает ошибку, используя Ransack - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь добавить пользовательский фильтр в активный администратор, который может фильтровать статус по имени.Статус сохраняется в таблице заказов, где 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

Я ожидаю, что отфильтрованные результаты будут показаны администратору.

1 Ответ

0 голосов
/ 28 июня 2019

Попробуйте это - Order.where(status: [0, 1]).map(&:id)

несмотря на Order.all.where("status = 0 OR status = 1").map(&:id)

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