Я недавно просматривал Rails и замечаю, что есть много ссылок на current_user
. Это происходит только от разработчика? и я должен сам определить его самостоятельно, даже если я использую Devise? Существуют ли предпосылки для использования current_user
(например, наличие сеансов, пользователей и т.д.)?
Rails: откуда появился печально известный "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