SequelでJSONを出力する
Sequelでありがちなのがクエリの結果を受け取って,これをJSONで展開したいとき,デフォルトではto_jsonがサポートされていないということ.厳密に言えばサポートされているけれども,色々とやってみた結果,うまく行くパターンと行かないパターンがあるらしい.
Sequelのモデルでは,プラグインを読み込むことができる.json_serializerと呼ばれるプラグインがネイティブで付いてくるものだが,モデル内で読み込んでもうまく動作しない.一応,whereした結果でto_jsonをしてもNoMethodErrorにならないことから,関数は存在しているらしい.
調べてみた結果,いくつか方法はあるものの,成功した例を紹介してみる.
どうやら,Sequelのクラス宣言を上書きしているらしい.to_jsonメソッドを追加している.
このコードをSequelを読み込んだ直後に挟むと,モデルが返ってくるメソッドを呼び出した時にto_jsonすることで,JSONの文字列を返してくれるようになる.
一応,Sequel本家でもto_json_changesと書いてあるブランチが存在しているので,もしかすると本格的にデフォルトでサポートするのかもしれないがいつになるかはちょっとわからない.
地味にこれが引っかかったので,少しだけメモがてら書いておく.
参考リンク