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希望搜索的名稱一起包含。
我希望有幫助。
檢查這個[問題](https://github.com/ernie/ransack/issues/61)。 Ransack沒有與meta_search相同的功能。在內部,它始終使用數據庫中定義的模型,並且無法使用由範圍創建的臨時表 –