Kaigi on Rails 2022 にて『森羅万象に「いいね」するためのデータ構造』の発表をしました。
https://kaigionrails.org/2022/talks/pndcat/
===概要===
サービス開発をしていると「いいね」の実装に対面することは多いでしょう。例えば EC サービスの場合、商品へのいいね、クチコミへのいいね、ブランドへのいいねなど、いろいろな対象に「いいね」をするケースが考えられます。さらには、ログインユーザーの「いいね」と、非ログインユーザーの「いいね」を作ることもあるかもしれません。
しかし、あらゆるものに「いいね」できるシステムを作るのは容易ならざることです。普通に実装するだけでは関連するコードは肥大化し、データベースのテーブルもどんどん増えていくばかりです。
似ているけど少し違う「いいね」を実装するにあたって、失敗してしまったデータ設計、そこにあった悩みや苦しみ、それらを解決していくリファクタリングの道すじを説明します。