3
我有两个模型,项目和类别使用has_and_belongs_to_many关联具有多对多关系。困惑于Rails 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,我可以做
@item.categories
做
@category.items
我认为我能找到一个给定项目@item关联的类别找到它的所有项目
但是我得到的说 ::加载ActiveModel的MissingAttributeError错误:缺少属性:我误解类
如何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
你在这里看起来好看,关联*应该*双向工作。如何分配'@ item'? – x1a4
我刚刚将你的代码粘贴到一个测试项目(Rails 3.2.1)中,并且这种关联对我来说都很好。 –
当你做一个Model.select(“something”)时,通常会抛出MissingAttribute异常first.somethingelse。你可以在git中粘贴你正在运行的代码和backtrace吗? – bcd