[解決済み] 多くの人が持っているもの、多くの人に属しているもの 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
といった具合に。
関連
-
[解決済み】Bundler: コマンドが見つからない
-
[解決済み】OS X Yosemite 10.10.5 で [Ruby on Rails] 5 をインストールすると extconf が失敗して終了コード 1 エラーになる。
-
[解決済み] 新規ユーザー作成時に ActiveModel::ForbiddenAttributesError が発生する。
-
[解決済み] Errno::EACCESS: パーミッションが拒否された @ dir_s_mkdir
-
[解決済み] Railsで `before_action` での `only:` はどのように機能するのですか?
-
[解決済み] エラーが発生しました。pgsqlをrailsで動作させようとすると、Peer authentication failed for user "postgres" と表示されます。
-
[解決済み] rake db:migrate db:reset とdb:schema:loadの違いについて
-
[解決済み】railsの文字列とtextの違い?
-
[解決済み】Railsのhas_manyがエイリアス名で表示される。
-
[解決済み] has_many through リレーションシップからユニークなレコードを表示するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Railsサーバーがポートはすでに使用されていると言う、そのプロセスを殺すにはどうすればよいですか?
-
[解決済み] Railsです。NameError: 初期化されていない定数
-
[解決済み] どのようにrailsでラジオボタンを正しく使用するには?
-
[解決済み] heroku open - no app specified
-
[解決済み] heroku push rejected, failed to compile Ruby/rails app
-
[解決済み] Railsマイグレーションを利用してカラムをドロップする方法
-
[解決済み] Railsでpng画像を文字列形式で表示するには?
-
[解決済み] rails consoleを起動するとRailsのイニシャライザーが呼ばれる?
-
[解決済み] Ruby on rails アプリで ES6 (ES2015) を使用するにはどうすればよいですか?
-
[解決済み] Ruby on Rails の新規セットアップ : "Expected string default value for '--rc'; got false (boolean)".