Rails: откуда появился печально известный "current_user"?

Я недавно просматривал Rails и замечаю, что есть много ссылок на current_user. Это происходит только от разработчика? и я должен сам определить его самостоятельно, даже если я использую Devise? Существуют ли предпосылки для использования current_user (например, наличие сеансов, пользователей и т.д.)?

Ответ 1

Он определяется несколькими драгоценными камнями, например. Разрабатывают

Вам нужно будет сохранить user_id где-нибудь, как правило, в сеансе после входа в систему. Также предполагается, что ваше приложение имеет и нуждается в пользователях, аутентификации и т.д.

Как правило, это что-то вроде:

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.

Обновлено: избегайте дополнительных запросов к базе данных, когда нет текущего пользователя.

Ответ 2

Да, current_user использует session. Вы можете сделать что-то подобное в своем контроллере приложений, если хотите выполнить собственную проверку подлинности:

def current_user
  return unless session[:user_id]
  @current_user ||= User.find(session[:user_id])
end