私は、ハイパーメディアAPIをレールに作成しようとしています。私はjson_apiアダプタを使用してactive_model_serializersでペイロードをシリアル化したいと思います。しかし、リンクを条件付きでシリアライズするのは簡単ではないようです。active_model_serializersとの条件付きリンク
これは、ユーザーが他のユーザーをフォローできる種類のブログアプリケーションです。ですから、UserAのようにUserリソースをシリアライズすると、current_userがUserAに従っていない場合はfollow、rel:unfollowの場合はcurrent_userが既にUserAに従っている場合はリンクします。 これは、ハイパーメディアAPIを作成する場合、非常に些細な使用例のようです。 active_model_serializersでこれを行う良い方法があれば誰にも知られていますか?
私は現在、このような何かを書いた(とすべてのシリアライザに含める):
def self.link(rel, &block)
serializer = self
super do
user = scope
next unless serializer.can?(user, rel, @object)
instance_eval(&block)
end
end
# And in serializer (just as usual):
link :self do
api_user_path(object.id)
end
それは作業を行います。しかし、ちょうどいい気分にはならない。そして、将来のactive_model_serializersへの変更が私のために物事をねじ込むなら、私は驚くことはありません。