0

ProductsController に create アクションがあります (パラメーターはビュー内のフォームから取得されます)。

def create
  vendor = @current_vendor
  product = Product.create(:name => params[:product][:name])
  vendor.products << product
  vendor.belongings.create(:product_id => product.id, :count => params[:belonging][:count], :detail => params[:belonging][:detail])
  if vendor.save
    flash[:notice] = "Produkt hinzugefügt!"
    redirect_back_or_default root_url
  else
    render :action => :new
  end
end
  1. 現在ログインしているベンダー (Authlogic) を格納する変数「vendor」を作成します。
  2. 新しい製品が作成され(製品名はフォームの入力フィールドから取得されます)、変数「製品」に保存されます
  3. 「製品」は現在のベンダーに接続されています
  4. 所有物テーブルには、製品への追加情報が格納されています
  5. それは全体を保存します

これは、所有物テーブルを介した多対多の関係です。

私の問題は、作成アクションが常に製品を 2 回作成することです!

ご協力いただきありがとうございます!:)

フォームから新しいオブジェクトを作成したときのコンソール ログは次のとおりです。

Started POST "/products" for 127.0.0.1 at 2013-09-15 20:40:26 +0200
Processing by ProductsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"lNk/qQMP0xhlCuGgHtU+d5NEvIlCFcPSKB0FxDZH0zY=", "product"=>{"name"=>"Erdbeeren"}, "belonging"=>{"count"=>"20", "detail"=>"Rot"}, "commit"=>"Create"}
DEPRECATION WARNING: ActiveRecord::Base#with_scope and #with_exclusive_scope are deprecated. Please use ActiveRecord::Relation#scoping instead. (You can use #merge to merge multiple scopes together.). (called from current_vendor_session at /Users/reto_gian/Desktop/dici/app/controllers/application_controller.rb:11)
  Vendor Load (0.3ms)  SELECT "vendors".* FROM "vendors" WHERE "vendors"."persistence_token" = '04f75db0e2ef108ddb0ae1be1da167536d47b4d79c60ecb443ad2ea5717ecd752388e581f9379746568c72372be4f08585aa5581915b1be64dc412cded73a705' LIMIT 1
   (0.1ms)  begin transaction
  SQL (0.8ms)  INSERT INTO "products" ("created_at", "name", "updated_at") VALUES (?, ?, ?)  [["created_at", Sun, 15 Sep 2013 18:40:26 UTC +00:00], ["name", "Erdbeeren"], ["updated_at", Sun, 15 Sep 2013 18:40:26 UTC +00:00]]
   (0.8ms)  commit transaction
   (0.1ms)  begin transaction
  SQL (0.6ms)  INSERT INTO "belongings" ("created_at", "product_id", "updated_at", "vendor_id") VALUES (?, ?, ?, ?)  [["created_at", Sun, 15 Sep 2013 18:40:26 UTC +00:00], ["product_id", 7], ["updated_at", Sun, 15 Sep 2013 18:40:26 UTC +00:00], ["vendor_id", 1]]
   (0.9ms)  commit transaction
   (0.1ms)  begin transaction
  SQL (0.6ms)  INSERT INTO "belongings" ("count", "created_at", "detail", "product_id", "updated_at", "vendor_id") VALUES (?, ?, ?, ?, ?, ?)  [["count", "20"], ["created_at", Sun, 15 Sep 2013 18:40:26 UTC +00:00], ["detail", "Rot"], ["product_id", 7], ["updated_at", Sun, 15 Sep 2013 18:40:26 UTC +00:00], ["vendor_id", 1]]
   (0.9ms)  commit transaction
Redirected to http://localhost:3000/
Completed 302 Found in 30ms (ActiveRecord: 5.1ms)
4

1 に答える 1

0

問題は行にある可能性があると思います

vendor.products << product

これは変数を追加していますproduct(これはProduct.create(:name => params[:product][:name])2vendor.products回目です-これは不要であり、問​​題の原因である可能性があります

于 2013-09-15T18:46:41.777 に答える