我使用Sorcery在Rails中设置身份验证,并试图创建一个模型,其中将用户的用户id作为引用链接到输入的数据模型,但我得到了一个错误:
Couldn't find User without an ID它指的是以下代码:
def create
@user = User.find(params[:user_id])
@certificate = @user.certificates.create(certificate_params)
redirect_to certificate_path(@certificate)
end为了回答我自己问过的基本问题,用户登录.
发布于 2015-06-19 22:06:26
如果上面的代码确实是您的代码,那么这实际上是一个非常奇怪的错误。你应该得到一些类似Couldn't find Bar with 'id'=的东西。上面的错误通常只在没有向find提供args的情况下才会给出,即。User.find()
无论如何,这里的根本问题是params[:user_id]不包含您期望它的值,而且很可能它根本不包含任何值。您还没有展示足够的其他代码来确定为什么是,但是并不重要.
除非您希望用户能够更改URL并为系统中的其他用户添加证书,否则不应该依赖params[:user_id]来创建关联对象,应该使用current_user --这是身份验证的全部要点。
所以:
def create
@certificate = current_user.certificates.create(certificate_params)
redirect_to certificate_path(@certificate)
endhttps://stackoverflow.com/questions/30947800
复制相似问题