我收到以下错误我的费用创建操作。 错误:未定义的方法`商店'为零:NilClass创建操作中User.last和User.find_by_id(params [:user_id])有什么区别?
此操作旨在使用用户“商店”页面上的条带创建新的费用。
我的模型关系如下。
用户HAS_ONE店, 店belongs_to的用户, 店的has_many费, 充电belongs_to的店
我已经包括从下面的收费控制器的create动作代码。
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
为什么识别用户的语法在User.last.shop.charges.build(charge_params)之类的东西时不起作用?
有趣的是,在show action中,User.find_by_id(params [:user_id])工作正常。
我都尝试这些建议既不似乎工作。 User.find_by(params [:user_id])允许费用通过(无错误),但它会自动为用户1创建费用,即使在url中定义的用户不是用户1也是如此。来自(哪里? – blippolis
使用'User.find(params [:user_id])'或'User.find_by!(id:params [:user_id])''。它应该引发'ActiveRecord :: RecordNotFound'错误。 – Omkar