Получить значение из сеанса для каждого метода каждого контроллера - PullRequest
0 голосов
/ 15 апреля 2011

У меня есть контроллер, и в каждом методе каждого контроллера у меня есть следующий код:

@user = session[:user]

Есть ли способ избежать использования этого кода на каждом методе каждого контроллера?

Ответы [ 2 ]

2 голосов
/ 15 апреля 2011

Вы можете добавить свой код в ApplicationController:

class ApplicationController < ActionController::Base
  protect_from_forgery
  before_filter :current_user

  def current_user
    @user = session[:user]
  end
end
0 голосов
/ 15 апреля 2011

Ответ @nash в порядке, и вот альтернативный вариант, предоставляющий вспомогательные методы, которые вы можете использовать в каждом методе / представлении. Это путь драгоценных камней, как Devise Go:

class ApplicationController < ActionController::Base
  protect_from_forgery

  helper_method :current_user
  helper_method :user_signed_in?

  private  
    def current_user  
      @current_user ||= User.find_by_id(session[:user_id]) if session[:user_id]  
    end

    def user_signed_in?
      return 1 if current_user 
    end

    def authenticate_user!
      if !current_user
        flash[:error] = 'You need to sign in before accessing this page!'
        redirect_to signin_services_path
      end
    end  
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...