我正在尝试在活动管理员中添加一个自定义过滤器,该过滤器可以按名称过滤状态。状态存储在订单表中,其中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上显示。
答案 0 :(得分:0)
尝试一下-
Order.where(status: [0, 1]).map(&:id)
尽管
Order.all.where("status = 0 OR status = 1").map(&:id)