我在模特中创建了一个has_and_belongs_to_many关联:
pack.rb
has_and_belongs_to_many :adresses
adress.rb
has_and_belongs_to_many :packs
在我的控制器中,我把它用于创建habtm:
@adress = AdressesPacks.create(:adress_id => params[:order],:pack_id => params[:order])
但是当我执行时我得到了这个错误
NameError (uninitialized constant OrdersController::AdressesPacks):
答案 0 :(得分:1)
通常在HABTM关系中,不必与包含连接数据的表进行交互。要将现有包添加到现有地址:
@adress = Adress.find(params[:order])
@adress.packs << Pack.find(params[:order])
如果您不需要Adress实例,可以将上述内容简化为一行:
Adress.find(params[:order]).packs << Pack.find(params[:order])
答案 1 :(得分:0)
如果您使用HABTM,则没有联接模型。换句话说,没有AdressesPacks
- 模型,至少只要你没有自己创建它。
相反,你通过做这样的事情来创建关系:
@adress.packs << @pack
答案 2 :(得分:0)
对我来说,uninitialized constant
错误发生了,因为我的HABTM关系中的一个模型在初始化时发出运行时错误。我修复了运行时错误(显然attr_accessible
在Rails 4中没有开箱即用),它也解决了uninitialized constant
错误。