JCo*_*r22 6 ruby-on-rails-3 ransack
我在我的rails项目中使用Ransack的sort_link来显示我的支付模型的费用列表.但是,'fee_amount'不是支付模型的属性,而是账单模型的类方法(属于支付).我现在拥有的是:
<%= sort_link @search,:bill_fee_amount,"便利费"%>
应该访问当前付款的账单并在该账单上调用'fee_amount'方法,该方法进行一些计算并返回浮点数.这是我希望搜索的浮标.
可以这样做,还是我只能根据我正在处理的模型的属性进行排序?
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')
Run Code Online (Sandbox Code Playgroud)
这个问题不清楚计算到底是什么,所以我假设它只是一个名为 的字段的总和fee_amount。不幸的是,情况可能比这更糟糕,我认为需要将讨厌的 SQL 计算包含在模型中Payment。
我认为关键点是 SQL 需要包含您要排序的列,因此您需要让 SQL 计算它并将其包含在 Ransack 想要搜索的名称中。
我希望这有帮助。