ruby-on-rails - rails : where does the infamous "current_user" come from?

标签 ruby-on-rails

我最近一直在研究 Rails,发现有很多对 current_user 的引用。这仅来自 Devise 吗?即使我使用 Devise,我也必须自己手动定义它吗?使用 current_user 是否有先决条件(例如 session 、用户的存在等)?

最佳答案

它是由几个 gem 定义的,例如设计

您需要将 user_id 存储在某处,通常是在登录后的 session 中。它还假设您的应用程序拥有并需要用户、身份验证等。

通常,它类似于:

class ApplicationController < ActionController::Base
  def current_user
    return unless session[:user_id]
    @current_user ||= User.find(session[:user_id])
  end
end

这假设 User 类存在,例如#{Rails.root}/app/models/user.rb

更新:当没有当前用户时避免额外的数据库查询。

关于ruby-on-rails - rails : where does the infamous "current_user" come from?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12719958/

相关文章:

ruby-on-rails - 如何为包含 Devise update_with_password 方法的方法编写通过测试?

ruby-on-rails - 如何加快 Assets 编译以进行测试?

ruby-on-rails - FactoryGirl 关联模型故障 : "SystemStackError: stack level too deep"

ruby-on-rails - Sentry Rails 客户端

ruby-on-rails - 在 Heroku 上使用 Git 部署时出错

ruby-on-rails - 事件存储在哪里存储文件(在磁盘上),我如何从物理上检索它们?

ruby-on-rails - 没有要加载的文件 -- bundler/setup (Ruby on rails)

ruby-on-rails - Rspec 测试由于一个奇怪的原因而失败

mysql - 使用 Rails 4 中的 include 优化查询

javascript - Rails Ajax 表单提交两次