如何解决我在 ActiveAdmin 中的自定义排序使过滤器崩溃
我有模型 User
和 Violation
。
User has_many violations
、violation belongs_to user
。
我写了范围,用于 ActiveAdmin 中索引页面上的默认排序用户。
def find_collection(options = {})
super.reorder('').where(status: 'suspicious')
.joins("LEFT JOIN violations ON users.id = violations.user_id")
.group('users.id')
.order('MAX(violations.created_at) desc')
.page(params[:page]).per(30)
end
它有效。
但是,我在用户索引页面上也有针对违规原因的过滤器:
filter :violations_reason_cont,as: :select,label: Violation.human_attribute_name(:reason),collection: Violation.reason.values
而且这个过滤器不适用于我的 find_collection
。
我收到错误:
PG::DuplicateAlias: ERROR: table name "violations" specified more than once :
SELECT COUNT(DISTINCT "users"."id") AS count_id,users.id AS users_id FROM "users"
LEFT OUTER JOIN "violations" ON "violations"."user_id" = "users"."id"
LEFT JOIN violations ON users.id = violations.user_id
WHERE "users"."status" = 'suspicious'
AND ("violations"."reason" ILIKE '%budget%')
GROUP BY users.id LIMIT 30 OFFSET 0
我该怎么做才能解决这个错误?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。