HABTMジョインテーブルのマイグレーションを手動で作成する必要がありますか?
2023-08-13 10:39:27
質問
今、HATBMを正しく動作させるのに苦労しています。私は、記事とタグというビートスキャナリオを持っています。多対多の関係なので、ここでは HABTM を使用すべきと推測しています。 しかし、手動で結合テーブル(この場合、articles_tags)を作成すべきかどうかわかりません。
私のコードは現在以下のとおりです。
class Article < ActiveRecord::Base
has_and_belongs_to_many :tags
end
class Tag < ActiveRecord::Base
has_and_belongs_to_many :articles
end
移行を実行すると、3番目のテーブルが作成されません。 また、私の3番目のテーブルは、ドメインロジックを持たず、単なるブラインド割り当てであることを付け加えたいと思います。
Rails 2.2.2を使っています。
どのように解決するのですか?
テーブルの1つのマイグレーションで行うか、それらのマイグレーションが実行されている場合は、別のマイグレーションで行う必要があります。
create_table :articles_tags, :id => false do |t|
t.references :article, :tag
end
add_index :articles_tags, [:article_id, :tag_id]
これでテーブルが作成され
:id => false
はこのテーブルにidフィールドを追加しないようRailsに指示しています。インデックスもあるので、この結合テーブルの検索を高速化することができます。
このためにモデル(ArticlesTag)を生成してやることもできます。
# article.rb
has_many :articles_tags
has_many :tags, :through => :articles_tags
# tag.rb
has_many :articles_tags
has_many :articles, :through => :articles_tags
# article_tag.rb
belongs_to :tag
belongs_to :article
から生成されたマイグレーションでテーブルを作成し、そのテーブルを
script/generate model articles_tag
の呼び出しで生成されたマイグレーションにテーブルを作成します。
関連
-
[解決済み] Railsサーバーがポートはすでに使用されていると言う、そのプロセスを殺すにはどうすればよいですか?
-
[解決済み] pg gem をインストールしようとすると 'libpq-fe.h' ヘッダが見つからない
-
[解決済み] AWS S3です。アクセスしようとしているバケットは、指定されたエンドポイントを使用してアドレスされている必要があります。
-
[解決済み] rspec 3 - クラスメソッドをスタブ化する
-
[解決済み] Ruby on Railsのためにnetbeansを構成する方法は?
-
[解決済み] Railsマイグレーションを利用してカラムをドロップする方法
-
[解決済み] Railsでpng画像を文字列形式で表示するには?
-
[解決済み] railsで':remote => true'はどのように動作するのでしょうか?
-
[解決済み] rails/rubyでgroup_byを使用する。
-
[解決済み] Rails DBの移行 - テーブルを削除するには?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】なぜRuby on Railsは、http://localhost:3000 の代わりに http://0.0.0.0:3000 を使用するのですか?
-
[解決済み] pg gem をインストールしようとすると 'libpq-fe.h' ヘッダが見つからない
-
[解決済み] 該当するルートがない [GET] "demo/hello"
-
[解決済み] rspec 3 - クラスメソッドをスタブ化する
-
[解決済み] Oauth2 Instagram API "リダイレクトURIが登録されたリダイレクトURIと一致しない"
-
[解決済み] Ruby:Rubyの配列にinclude.の反対はある?
-
[解決済み] Rspec が私のモデルクラスを認識しない。初期化されていない定数エラー
-
[解決済み] RubyとRailsの "Date.today "フォーマット
-
[解決済み] Railsでグループとカウント
-
[解決済み] Heroku Error R14 (Memory quota exceeded): How do I solve this?