1

我有几个模型

class Product < ActiveRecord::Base
  has_and_belongs_to_many :categories
end

class Category < ActiveRecord::Base
  has_and_belongs_to_many :products
end

现在为什么我不能说

prod = Product.new
prod.categories << Category.new

为什么要has_and_belongs_to_many添加类方法,Product#categories<<而应该添加实例方法?

我如何利用这些类方法来设置关联?

4

2 回答 2

2

有了你给我的错误和代码,这就是你可能缺少的:

prod = Product.new              # This is a Product instance
prod.categories << Category.new # This works

prod = Product.where(name:'x')  # This returns a query (ActiveRecord::Relation) 
prod.categories << Category.new # This doesn't work

prod = Product.where(name:'x').first  # This is a Product instance
prod.categories << Category.new       # This works
于 2013-06-10T03:33:05.500 回答
0

当创建一个新对象(比如说Product)时,您可以使用 .build 方法来填写这些关联并调用 save!

编辑:这是一个很好的阅读

于 2013-06-10T03:06:44.730 回答