【发布时间】: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