对非属性使用Ransack sort_link
-
12-12-2019 - |
题
我在我的rails项目中使用Ransack的sort_link来显示我的费用列表 付款 模特。但是,'fee_amount'不是 付款 模型,而是一个类的方法 比尔 模型(属于支付)。我目前拥有的是:
<%=sort_link@search,:bill_fee_amount,"便利费"%>
它应该访问 比尔 的电流 付款 并在其上调用'fee_amount'方法 比尔, ,它做一些计算并返回一个浮点数。我希望能找到这些花车。
这可以做到吗,还是我只能按我正在处理的模型的属性进行排序?
解决方案
Ransack是元搜索的继任者,根据元搜索文档,您可以创建自定义搜索。这是链接:
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想要搜索的名称中。
我希望这能有所帮助。
其他提示
不隶属于 StackOverflow