1. ホーム
  2. ruby-on-rails

[解決済み] 多くの人が持っているもの、多くの人に属しているもの vs 多くの人を通して持っているもの

2022-03-03 01:02:21

質問

の違いについて教えてください。 has_and_belongs_to_manyとhas_many through relationshipがあります。いつ、どこで、どちらを使えばいいのでしょうか?

どのように解決するのですか?

覚えている限りでは has_and_belongs_to_many は、2つのモデルを参照する単純なルックアップテーブルを提供します。

例えば

ストーリーは多くのカテゴリーに属することができます。 カテゴリは多くのストーリーを持つことができます。

Categories_Stories Table
story_id | category_id

has_many :through は、元のモデルのいずれにも属さない様々な情報を格納するために使用できる第3のモデルを提供します。

例えば

人は多くの雑誌を購読することができます。 雑誌は多くの購読者を持つことができます。

このように、真ん中に購読モデルを持つことで、先ほどの例と同じようなテーブルができ、さらにプロパティが追加されます。

Subscriptions Table
person_id | magazine_id | subscription_type | subscription_length | subscription_date 

といった具合に。