2017-04-20 8 views
0

存在していても、 "オブジェクトが存在しなければなりません" というエラーが発生しhas_manyの関係を作成します。 accoutが存在してもこのエラーが表示されます:それは私のコントローラ

Account must exist 

明らかにアカウントが存在します。

UPDATE @ account.byebug

Account must exist 

Return value is: nil 

[10, 19] in blablabla/item_shop_controller.rb 
    10:  @account = Account.first 
    11:  @item = ItemShopItem.find(params[:item_id]) 
    12:  @new_item = @account.items.create(vnum: @item.vnum, count: @item.amount) 
    13:  puts @new_item.errors.full_messages 
    14:  puts @account.byebug 
=> 15: end 

@

account.inspect

#<Account id: 1, login: "test", password: "*898425FBB710DA05B19D718FB320796E207FDB5F", real_name: "", social_id: "1234567", email: ...."> 

答えて

0

@accountは、あなたのアカウントのモデルのインスタンスを参照します。インスタンスはモデル(Account.create)から作成されます。 @accountを作成しようとしているので、代わりに@new_item = Account.create(vnum:@ item.vnum、count:@ item.amount)と言う必要があります。そうでなければ、存在しない@account Accountモデルをインスタンス化する代わりに変数を作成します。

+0

私はアカウントを作成していませんが、アカウントに関連付けられた新しいアイテムを作成しています。アイテムはモデルであり、それはアカウントに属します。アカウントには多くのアイテムがあります。変数@accountは残りのコードに存在します。ありがとう。 – GroovyTony

0

ここではオブジェクト@accountを指定していません。NILです。

ですから、コール@account.itemsを通じて関係has_many :items@accountて作成したクエリを適用しようとしているとき、それはでsql callを関連付ける任意のアカウントを見つけていません。

もしカウントがなければ、どのようにしてそれがアイテムを見つけることと関連づけられますか?

はちょうどあなたの方法の開始にチェックし

@account= Account.first 

を使用して、それを行くを与えます。

+0

こんにちは。ご返信ありがとうございますが、私はまだ同じエラーが発生しています。しかし、@accountは存在します。 – GroovyTony

+0

'buy_item'メソッドでcreateコマンドの直前で(部分的に)' @ account'の値を共有できます。 'byebug'を使って' @ account'の値をチェックすることができます。また完全なエラーコードを共有してください – Mayank

+0

私はaccount.byebugとaccount.inspectでメインポストを更新しました。最初の人は存在しないと言い、2番目の人は存在すると言います。私は今混乱している – GroovyTony

関連する問題