4

has_and_belongs_to_many 関連付けを使用して多対多の関係を持つ 2 つのモデル、アイテム、およびカテゴリがあります。

私のモデルでは

class Item < ActiveRecord::Base
    has_and_belongs_to_many :categories
end

class Category < ActiveRecord::Base
    has_and_belongs_to_many :items
end

結合テーブル「categories_items」を作成しました:

create_table "categories_items", :id => false, :force => true do |t|
    t.integer "category_id"
    t.integer "item_id"
end

エラーは発生していませんが、関連付けで許可されていることについて少し混乱しています。現在、@category というカテゴリがある場合、次のようにしてその中のすべてのアイテムを見つけることができます。

@category.items

私は、特定のアイテム @item に関連付けられたカテゴリを見つけることができると仮定しました

@item.categories

ただし、 ActiveModel::MissingAttributeError: missing attribute: category というエラーが表示されます

has_and_belongs_to_many 関連付けがどのように機能するかを誤解していますか、それともコードに何かが欠けていますか? ありがとうございました!

編集 - 追加情報:

混乱は、アイテム/カテゴリを割り当てる方法にあると思います。現在、私はそれらを個別に作成しています:

@item = Item.new
... add attributes ... 
@item.save

@category = Category.new
... add attributes ... 
@category.save

そしてそれらを

@category.items << @item
@item.categories << @category
4

1 に答える 1