0

モデルで has_and_belongs_to_many 関連付けを作成します。

pack.rb

  has_and_belongs_to_many :adresses

address.rb

  has_and_belongs_to_many :packs

私のコントローラーでは、これを入れてhabtmを作成します:

   @adress = AdressesPacks.create(:adress_id => params[:order],:pack_id => params[:order])

しかし、実行するとこのエラーが発生します

NameError (uninitialized constant OrdersController::AdressesPacks):
4

3 に答える 3

1

通常、HABTM リレーションシップでは、結合データを含むテーブルを操作する必要はありません。既存のパックを既存のアドレスに追加するには:

@adress = Adress.find(params[:order])
@adress.packs << Pack.find(params[:order])

Address インスタンスが必要ない場合は、上記を 1 行に単純化できます。

Adress.find(params[:order]).packs << Pack.find(params[:order])
于 2013-03-06T18:54:03.877 に答える
0

uninitialized constantHABTM 関係のモデルの 1 つが初期化時に実行時エラーを出したため、私にとってはエラーが発生していました。実行時エラーを修正し ( attr_accessibleRails 4 ではそのままでは動作しないようです)、uninitialized constantエラーも解決しました。

于 2013-12-31T12:09:31.240 に答える
0

HABTM を使用する場合、結合モデルはありません。つまり、AdressesPacks少なくとも自分で作成していない限り、モデルは存在しません。

代わりに、次のようにしてリレーションを作成します。

@adress.packs << @pack
于 2013-03-06T18:46:46.570 に答える