我在我的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想要搜索的名称中。

我希望这能有所帮助。

其他提示

你不能用ransack来了,但是检查这个问题。似乎有些人为这个功能做了补丁,但我没有尝试过他们。

内部ransack

pd:重新编写评论作为答案,因为我总是回到这个问题:p

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top