NameError(未初始化的常量OrdersController :: AdressesPacks)HABTM关系

时间:2013-03-06 18:44:22

标签: ruby-on-rails ruby activerecord

我在模特中创建了一个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):

3 个答案:

答案 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错误。