我有几个型号
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<<
等类方法?
如何使用这些类方法来设置关联?
答案 0 :(得分: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
答案 1 :(得分:0)
创建新对象时(假设为Product
),您可以使用.build方法填写这些关联并调用save!
编辑:这是一个很好的read