ransackでキーワード引数を変数にする
ransackで検索を行う場合、キーワード引数で条件を指定するが、
Item.ransack(key_matches_any: value).result
ここの key_matches_any
を変数にしたい。
キーワード引数の説明をよく見ると
1.9 でも、呼び出し側のキーワード引数はできていました。
log("Hello!", level: "INFO")
このキーワード引数は { :level => “INFO” } というハッシュとして当該メソッドに渡されます。 受け取り側でこのハッシュを分解する処理が必要でした。
とあるので、従来どおりキーワード引数を使わずハッシュで渡してあげれば良い。
Item.ransack({"#{key}_matches_any" => value}).result
ということ。多分他のキーワード引数を使っているメソッドの実行でも使えると思う。
2019/12/04追記
普通にキーワード引数に変数を使えた!
Item.ransack("#{key}_matches_any": value).result
でおk