私の請求作成のアクションで次のエラーが発生しています。 エラー:未定義のメソッド `shop 'for Nil:NilClass作成アクションでUser.lastとUser.find_by_id(params [:user_id])の違いは何ですか?
このアクションは、ユーザー「ショップ」ページでストライプを使用して新しい請求を作成するためのものです。
私のモデルの関係は以下の通りです。
ユーザーhas_oneのショップ、ユーザーbelongs_toの ショップ、 ショップにhas_many料、私は以下の料金コントローラからアクションを作成するコードが含まれているショップ
BELONGS_TO 充電。 User.last.shop.charges.build(charge_params)のようなものがないとき
def create
@user = User.find_by_id(params[:user_id])
@shop = @user.shop
@charge = @shop.charges.build(charge_params)
if @charge.save
redirect_to root_path
else
flash[:danger] = "Error"
redirect_to root_path
end
end
なぜその構文は、ユーザを識別するために動作しませんか?
興味深いことに、showアクションの行User.find_by_id(params [:user_id])はうまく動作します。
を使用することができ、私はこれらの提案の両方を試してみましたが、どちらも動作するように見えません。 User.find_by(params [:user_id])は、料金を通過させる(エラーなし)が、URLに定義されたユーザーがユーザー1ではないにもかかわらず、ユーザー番号1の料金を自動的に作成します。から来る? – blippolis
'User.find(params [:user_id])'または 'User.find_by!(id:params [:user_id])'を使用してください。 'ActiveRecord :: RecordNotFound'エラーが発生します。 – Omkar