Mastodonのソースコードを最近のRailsの記述を学ぼうとしたのでMastodonのソースコードを読み始めた。
Mastodonのrootページになる/about
からみたのだが、最初からわからないことばかり!(泣)
MastodonにはActiveModelSerializers
を使ってjsonの処理を行っていたのでActiveModelSerializers
を調べてみた。
ActiveModelSerializersとは
ActiveModelSerializers brings convention over configuration to your JSON generation.
と書いてある。 つまりActiveModelSerializersとはRailsで簡単で素早くjsonを作れるgemである。 JSON形式でレスポンスを返す場合、表示するパラメータを制御したいときに細かなJSONの制御を行うことができるので便利。
使い方
rails generate serializer Hoge
を実行すると
app/serializers/hoge_serializer.rb
ファイルが作成される。
1 2 3 4 5 6 7 |
|
上記のコードをみてみると
- attributes
にレスポンスで表示したいパラメータを記述する。
- 関連オブジェクトで同時に表示したいオブジェクトがある場合はhas_many
やhas_one
などが使える。
- 関数を定義することで、独自のパラメータを追加することもできる。
Controllerで次のように書くと、
1 2 |
|
結果のjsonが以下のようになっている。
1 2 3 4 5 6 |
|
このように、Serializerクラスで整形処理を行うことで、Controllerがより綺麗になると思う。