ransacker_translatorというgemを作っているのですが、そのときに不具合に遭遇したのでメモっておきます。
Railsを4.2にバージョンアップしたところ、Ransackで独自に作った検索条件のところでテストが落ちてしまいました。
RuntimeError: unsupported: String
原因は、Arel::Nodes::NamedFunctionの引数の配列に素の文字列を渡していたことにありました。
それらを全てArel::Nodes.build_quotedで処理する必要があるようです。
参考URL: Regression with NamedFunction and InfixOperation
修正前のコード
Arel::Nodes::NamedFunction.new(db_function_name, args)
修正後のコード
Arel::Nodes::NamedFunction.new(db_function_name, args.map { |it| Arel::Nodes.build_quoted(it) })