Manyという機能(通称:HABTM)があります。HABTMとは2つのデータモデルを中間のデータを介して関連させるデータモデルで冒頭の図のようなデータモデルです。筆者がこの省略形の読み方などについてTwitterで話していたところ、興味深いリプライを受け取りました。2012俺らはHABTMなんか使わない。HABTMは悪だからだ。has_and_belongs_to_manyと題された記事。それによると下記の理由からHABTMを使うべきではないとしています。joinテーブルが隠蔽されて過度に魔法的である。場合、ジョインしたモデルにデータが増える。これをHABTMから追うのは難しい。HABTMではなくHMTを使えばなんの問題もない。データが大きなってしまってからHMTに移行するのは難しい。文中に出ているHMTとはHasManyの:throughオプションの事で、HMTを利用すれば中間のモデルを介さずに同様のデータ構造を実現できます。蛇足ですがこれまでは「HABTM」を「はびたむ」と発音していましたが、助言に従って「エイチエービーティーエム」と発音していくことにします。HABTMはRailsにインスパイアされたCakePHPにも実装されていますが、Railsのコミュニティではすでにバッドプラクティスになっているというギャップが興味深いですね。他にもこのような例があるのではと思います。RSS.古いエントリーに対するコメントで恐縮ですが、HABTMを使わなくてもHMTで実現できるというのは理解し、普段使うのもHMTに移行しているのですが(CakePHP)、「中間のモデルを介さずに同様のデータ構造を実現できます」というのが未だに理解ができていません。故に「HABTMが悪だ」というところも理解ができないでいます。n:nの関係にあれば中間テーブルは必要だと思いますし、それが単にjoinだけの役割であるとき(他のデータを保持する必要が無い)、HABTMを使うべきでないというのはどの点が理由になるのでしょうか。コメントをキャンセルコメントを入力してください。以下に詳細を記入するか、アイコンをクリックしてログインしてください。アカウントを使ってコメントしています。アカウントを使ってコメントしています。アカウントを使ってコメントしています。アカウントを使ってコメントしています。新しいコメントがついたらメールで通知。us@alistersjpで更新をお知らせしています。(15秒)オクトキャットのフィギュアがついに発売開始。使用に同意したとみなされます。ポリシー%d人のブロガーが「いいね」をつけました。