我有两个模型、项目和类别,它们使用 has_and_belongs_to_many 关联具有多对多关系。
在我的模型中,我有
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 关联的类别
@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