导轨中魔法宝石的关联错误

时间:2015-06-19 21:51:10

标签: ruby-on-rails ruby authentication gem sorcery

我使用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

要回答我自问过的基本问题,用户已登录...

1 个答案:

答案 0 :(得分:1)

如果以上内容真的是您的代码,那实际上是一个非常奇怪的错误。你应该得到像Couldn't find Bar with 'id'=这样的东西。如果你根本没有向find提供args,那么通常只会给出上述错误。 User.find()

无论如何,这里的根本问题是params[:user_id]不包含您期望的值,并且可能根本不包含任何值。您还没有足够的其他代码来确定原因,它并不重要...

除非您希望人们只能更改URL并为系统中的其他用户添加证书,否则您不应该依赖params[:user_id]来创建关联对象,您应该使用{ {1}} - 这就是整个身份验证的一种方式。

所以:

current_user