Rails 中与巫术 Gem 的关联错误
Association Error with Sorcery Gem in Rails
我在 Rails 中使用 Sorcery 设置身份验证,我正在尝试创建一个模型,其中用户的用户 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
为了回答我问过自己的基本问题,用户已登录...
如果以上确实是您的代码,那实际上是一个非常奇怪的错误。你应该得到类似 Couldn't find Bar with 'id'=
的东西。上面的错误通常仅在您根本不向 find
提供任何参数时才会出现,即。 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)
end
我在 Rails 中使用 Sorcery 设置身份验证,我正在尝试创建一个模型,其中用户的用户 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
为了回答我问过自己的基本问题,用户已登录...
如果以上确实是您的代码,那实际上是一个非常奇怪的错误。你应该得到类似 Couldn't find Bar with 'id'=
的东西。上面的错误通常仅在您根本不向 find
提供任何参数时才会出现,即。 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)
end