【问题标题】:Accessing current_user devise method from rails controller从 rails 控制器访问 current_user 设计方法
【发布时间】:2017-10-20 04:27:55
【问题描述】:

我在我正在构建的 Rails 应用程序中使用设计。我想在我的控制器中使用 current_user.id 获取当前登录的用户的 ID,而不是从我的视图中将其作为参数传递。有什么办法可以做到这一点吗?谢谢

【问题讨论】:

  • 我一定要问一下,你试过用current_user.id吗?
  • @Sebastián Palma 是的,我试过了,但出现错误:未定义的方法 `id' for nil:NilClass

标签: ruby-on-rails ruby devise


【解决方案1】:

如果您已经正确安装了 Devise 并且没有通过覆盖 Devise 控制器而破坏某些东西,您应该能够从控制器访问current_user.id。此方法仅在用户登录且您可以使用user_signed_in? 方法进行测试时才有效。最后,假设 Devise 使用的资源名称确实是 user。这是默认设置,但可以将 Devise 配置为使用不同的资源名称。

【讨论】:

  • @RT5754:current_user 方法应该在您链接的入门应用程序的所有控制器中都可用。
  • 如果我创建了新的控制器,我是否必须在其中包含设计或其他东西才能访问这些方法?
  • 如果您按照设计文档中的说明进行操作,则无需执行任何操作即可使 current_user 可用。
  • 感谢您的回答。这篇文章的答案对我有用stackoverflow.com/questions/28804532/…
  • 这是有道理的。您的问题表明您想在控制器中访问current_user,而不是在您的模型中。我不确定您的特定用例是什么,但我通常建议您不要尝试在您的模型中访问 current_user。通常最好将该逻辑保存在控制器或助手中。关于上面链接的 SO 问题,我会将该逻辑放在帮助程序中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-07
  • 1970-01-01
  • 2014-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多