ActiveModel::Serializerでキー名をキャメルケースにする方法

投稿日時:
Ruby


フロントでTypescriptを使用している場合など、レスポンスで受け取るキー名がスネークケースだと、tslintでエラーを吐いてしまったりとコードフォーマット上、微妙になってしまうことがあります。


基本的にrubyはスネークケースを使用するべきで、Typescriptはキャメルケースを使用するべきなので、両者の基本が違うですが、WebAPIなどで特にそのクライアントアプリ専用に作る場合は、クライアント側で使いやすいように作るべきです。

(一般公開する汎用的なAPIの場合はまた別)



なので、Rails(サーバ)側でレスポンスのキー名をキャメルケースにしてやる必要がある場合があります。



jbuilderを使っている場合が多そうですが、、私はActiveModel::Serializerを最近好んで使っているので、Serializerでキャメルケースにする方法について調べました。



方法は簡単で、以下をinitializerに追記するだけです。


ActiveModelSerializers.config.key_transform = :camel_lower

とりあえずconfig/application.rbに書いておけば良いかなと思います。

ただ、この手法だと全レスポンスのキー名が変更されてしまうので、途中から上記変更を加える場合は注意が必要です。