思いのほか前回のRailsプチ・デザインパターンの紹介に反応があったので、こういう小ネタも出していったほうがいいのかな、ということで第二弾。 ソーシャル系アプリだと、ユーザとユーザを関連付ける多対多のモデルがたくさんでてきます。たとえば、一般的なところではフォローとかブロックとか足あととか。さらにデーティングサイトになると、ウィンクだったり、Secret admirer︵こっそりlikeするけど両思いだったらおめでとうって通知がくるってやつ︶だったり、いろいろなモデルがこのパターンにあてはまります。 この場合、﹁AがBをフォローしている﹂﹁BがAをフォローしている﹂﹁AとBがお互いにフォローしている﹂という3つの状態があるわけですが、相互フォローの状態は﹁AがBをフォローし、かつBがAをフォローしている﹂と読み替えてSQLでも記述可能なので、以下ではシンプルに単方向のグラフで全てを扱うもの