4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Active Recordのhas_and_belongs_to_manyとhas_many :throughについてもくもく考える会その1

Last updated at Posted at 2018-11-02

はじめに

こんばんは。
金曜日の夜ですね。明日が休みだと思うと朝起きなくていいからでしょうか。心なしか色々捗る気がします。
でもそろそろ眠たいので1日いちQiitaを残して夢の国に旅立とうと思います。

この記事で書くこと

Active Recordのアソシエーション(公式railsguidesへのリンクを貼っておきます)
has_and_belongs_to_many の実装コードを読んでみて気づいたことをつらつらと書く。

背景

多対多の関連付けを表現するとき has_and_belongs_to_manyhas_many :through どちらを選択しますかという問いに対し自分は1年前Railsを習い始めた頃チームの人に教わりながら has_and_belongs_to_many を選択し実装しました。
ですから、実体の仲介テーブルを持ち、そこに2つの多対多の関係をもつモデルのidをセットで保存して関連を表現していたんですね。
でも、今直近で多対多の関連をもつことになりそうなモデルがあり、 has_and_belongs_to_many 使ってるのなぜなの? has_many :through を使わない理由があるってこと?とPRで質問された時に自分は明確に理由を応えることができず、それがきっかけで、この2つの方法についてしっかり考えようと思いました。
※世の中(google先生の用意してる世界)で has_and_belongs_many やめよう! という意見が多いのも目にしました。
が、ここでは特に世の皆さんがおっしゃってるような内容をそう思うということを書くのではなく、あくまでコードをよんで自分が理解できたこと、できないこと、その上での2つの違いについてまとめていけたらいいなと思っています。

:eyes: よし、よむ。

:eyes: このメソッドに関して読んだ結果という感想

謎が残った。

今日は has_and_belongs_to_many について駆け足でしかできませんでした。
「その1」とタイトルをつけた以上、 has_many :through についてのコードも明日読みたいと思います。図とかかいて整理しようかな。。
では今週も平日お疲れ様でした。
おやすみなさい。良い夜を。
Happy coding! :sleeping: :waxing_gibbous_moon:

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?