2017-02-08 2 views
0

私は金銭価値にマネーレールの宝石を使用しています。私はこの分野でフィルタリングしたいです。 DBに格納された値はセントに保存されますが、実際の値にのみ適用されます。アクティブな管理者のマネーフィルタの使用方法?

+0

あなたがデータをDBに保存されているDB –

+0

データに保存されている方法についての例を投稿することができますがセント(100倍)です。したがって、実際の価格が289の場合、dbに格納されるデータは289 * 100 = 28900になります。 –

答えて

1

カスタムランカッカーを使用することができます。

# in your model 
ransacker :price_money, formatter: proc { |v| v.to_i * 100 } do |parent| 
    parent.table[:name] 
end 

# in your admin file 
filter :price_money 
+0

試行同じ ransacker:price_money、formatter:proc {| v | v * 100} do | parent | parent.table [:price_cents] end しかし、検索でエラーが発生しました。フィルタ入力として5を使用した場合、エラーは '55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555です。ActiveRecord :: Type :: Integer with limit 4'の範囲外です。 –

+0

問題は型キャストによるものでした。 procでは整数に変換する必要があった文字列を取得していました。 proc {| v | v.to_i * 100} –

関連する問題