質問

私の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を検索したい名前で含める必要があります。

私はそれが助けを願っています。

他のヒント

あなたはそれが来るのでRansackを使うことはできませんが、この問題。この機能のためにパッチを作った人がいるようですが、私はそれらを試していません。

Ransack 、内部的には、データベースで定義されているモデルを常に使用しています。スコープによって作成された一時テーブルを使用します。

PD:私がいつもこの質問に戻ってくるように、コメントを答えとして再練習しました:P

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top