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