【问题标题】:Active Admin returning error using ransackActive Admin 使用 ransack 返回错误
【发布时间】:2019-06-27 11:08:43
【问题描述】:

我正在尝试在活动管理员中添加一个自定义过滤器,它可以按名称过滤状态。状态存储在订单表中,其中 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

我希望过滤后的结果会显示在管理员上。

【问题讨论】:

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


    【解决方案1】:

    试试这个 - Order.where(status: [0, 1]).map(&amp;:id)

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-13
      • 1970-01-01
      • 1970-01-01
      • 2014-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多