Rails の多対多の関係では を使用しませんbelongs_to
。代わりに、いくつかのオプションのいずれかを使用します。最初はhas_and_belongs_to_many
:
# app/models/category.rb
class Category < ActiveRecord::Base
has_and_belongs_to_many :items
end
# app/models/item.rb
class Item < ActiveRecord::Base
has_and_belongs_to_many :categories
end
そして、次のような移行で、データベースに追加の結合テーブルを追加する必要があります。
class AddCategoriesItems < ActiveRecord::Migration
def self.up
create_table :categories_items, :id => false do |t|
t.integer :category_id
t.integer :item_id
end
end
def self.down
drop_table :categories_items
end
end
結合テーブルの名前は、他の 2 つのテーブルの名前を組み合わせたものであることがわかります。:id => false
このテーブルには主キーが必要ないため、テーブルは上記のようにアルファベット順に記載する必要があり、そこに存在する必要があります。Railsの関連付けが解除されます。
has_many :through
関係自体に関する情報を保存する必要があるかのように知られている、別のより複雑な方法もあります。両方の方法を実行する方法と、それぞれをいつ使用するかについて詳しく説明した記事全体を書きました。
Rails の基本的な多対多の関連付け
他にご不明な点がございましたら、お問い合わせください。