属性以外の場合はRANSACK SORT_LINKを使用してください
-
12-12-2019 - |
質問
私のRailsプロジェクトでRansackのSort_Linkを使用しています。支払いモデルの料金のリストを表示します。ただし、 'fee_amount'は payment モデルの属性ではなく、代わりに Bill モデル(支払いに属する)のクラスメソッドです。私が現在持っているもの:
<%= sort_link @search、:bill_fee_amount、「都合料」%>
現在支払いの bill にアクセスし、その bill の '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')
.
質問は、計算が正確にあることについては明らかではなかったので、fee_amount
というフィールドの合計であると仮定しました。残念ながら、それはおそらくそれよりもはるかに悪いです、そして私は厄介なSQL計算がPayment
モデルに含まれる必要があると思います。
キーポイントSQLには、SQLがオンになっている列を含める必要があるため、SQLを計算する必要があり、RASSACKを検索したい名前で含める必要があります。
私はそれが助けを願っています。
所属していません StackOverflow