graphql-rubyでfieldにrailsのenumを利用する

はじめに

Railsでアプリケーションを作成する際に、enumを利用しないケースはほとんどないと思います。同時にgraphql-rubyでAPIを生やそうと考えた場合、enumの扱いに困るのではないかと思います。何故ならばgraphql-rubyには我々ユーザが個々に定義する独自のenum(たとえばUser#status、など)に対応したtypeが存在しないからです。

では、graphql-rubyにおいて、enum型はどうやって扱えばよいのでしょうか。

実装

以下のような形でGraphQL::EnumType.defineを利用します。

上記のように、Modelで定義したenumをgraphql-ruby側でも定義することで、利用することが可能となります。

いささか冗長な気がしないでもないですが、こればかりは仕方がありません。いつの日か、ActiveRecord側から上手いこと引っ張ってくる方法が提案されることを祈っておきましょう。

Rails

Posted by poison