Ransack 是 MetaSearch 的继承者,根据 MetaSearch 文档,您可以创建自定义搜索。这是链接:
https://github.com/ernie/meta_search
我认为这样的事情会起作用:
scope :sort_by_bill_fee_amount_asc, joins(:bill).select('sum("bills"."fee_amount") AS bill_fee_amount').order('bill_fee_amount ASC')
scope :sort_by_bill_fee_amount_desc, joins(:bill).select('sum("bills"."fee_amount") AS bill_fee_amount').order('bill_fee_amount DESC')
这个问题不清楚计算究竟是什么,所以我认为它只是一个名为fee_amount
. 不幸的是,它可能比这更糟糕,我认为讨厌的 SQL 计算需要包含在Payment
模型中。
我认为的关键点是 SQL 需要包含您正在排序的列,因此您需要让 SQL 计算它并将其包含在 Ransack 想要搜索的名称中。
我希望这会有所帮助。