読者です 読者をやめる 読者になる 読者になる

パルカワ2

PerlとRubyとイチャラブ

Railsのas_jsonをオーバライドするのではなくserializable_hashをするべきなのかもしれない

ちょっとした事情でas_jsonをオーバーライドする必要があるのでは?となったので、調べた。実際にはやってないのでserializable_hashではダメかもしれない。

as_jsonを読むとserializable_hashを使っていて、
https://github.com/rails/rails/blob/master/activemodel/lib/active_model/serializers/json.rb#L88

serializable_hashは、他のオブジェクトの場合でもas_jsonを経由しないので、
下の例の場合user#as_jsonは呼ばれない。user#serializable_hashは呼ばれるので、やるならそちらの方が良さそう。

data = product.as_json({user: {include: [:profile]}})

https://github.com/rails/rails/blob/master/activemodel/lib/active_model/serialization.rb#L97

フレームワーク、何を使うにせよ使うからにはコードを読む必要はあると思うので、読むのが手っ取り早い感じする。