首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails中与Sorcery Gem的关联错误

Rails中与Sorcery Gem的关联错误
EN

Stack Overflow用户
提问于 2015-06-19 21:51:10
回答 1查看 43关注 0票数 1

我使用Sorcery在Rails中设置身份验证,并试图创建一个模型,其中将用户的用户id作为引用链接到输入的数据模型,但我得到了一个错误:

代码语言:javascript
复制
Couldn't find User without an ID

它指的是以下代码:

代码语言:javascript
复制
def create
  @user = User.find(params[:user_id])
  @certificate = @user.certificates.create(certificate_params)
  redirect_to certificate_path(@certificate)
end

为了回答我自己问过的基本问题,用户登录.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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 --这是身份验证的全部要点。

所以:

代码语言:javascript
复制
def create
  @certificate = current_user.certificates.create(certificate_params)
  redirect_to certificate_path(@certificate)
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30947800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档