活动管理员使用ransack返回错误

时间:2019-06-27 11:08:43

标签: ruby-on-rails ruby-on-rails-5 activeadmin

我正在尝试在活动管理员中添加一个自定义过滤器,该过滤器可以按名称过滤状态。状态存储在订单表中,其中0或1表示“待处理”。我正在使用ransacker返回已过滤的订单,但这给了我错误。

      PG::UndefinedFunction: ERROR:  operator does not exist: bigint

有人可以帮我弄清楚如何解决此错误吗?

我试图更改我的洗劫方法,但无济于事。这是我的代码:

在订单管理页面中:

    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

我希望过滤后的结果可以在admin上显示。

1 个答案:

答案 0 :(得分:0)

尝试一下- Order.where(status: [0, 1]).map(&:id)

尽管 Order.all.where("status = 0 OR status = 1").map(&:id)

相关问题