рельсы сессионный помощник (это плохо) - PullRequest
2 голосов
/ 26 августа 2011

Я назначаю весь пользовательский объект для удержания в сеансе ... Это плохо?Как рельсы хранят данные сеанса?У меня такое чувство, что это плохая идея.Должен ли я просто сохранить user_id в сеансе?

module SessionsHelper
  def sign_in(user)
    session[:user] = user
  end

  def current_user
    session[:user]
  end

  def sign_out
    session[:user] = nil
  end
end

РЕДАКТИРОВАТЬ (я думаю, это лучше)

module SessionsHelper
  def sign_in(employee)
    session[:employee_id] = employee.id
    @employee = employee
  end

  def current_employee
    if session[:employee_id]
      @employee||=Employee.first(session[:employee])
    end
  end

  def sign_out
    session[:employee_id] = nil
    @employee = nil
  end
end

Ответы [ 2 ]

8 голосов
/ 26 августа 2011

Хранилище сеансов по умолчанию - CookieStore с ограничением размера 4 КБ. Поэтому, в зависимости от размера вашего пользовательского объекта, это может быть плохой идеей. Возможно, вы не сможете разместить всю информацию в куки, особенно если в куки хранится другое содержимое.

Кроме того, я бы рекомендовал помещать как можно меньше информации в сеанс cookie, чтобы уменьшить размер запросов / ответов вашего пользователя. Файлы cookie будут отправляться с каждым новым запросом / ответом, по крайней мере, до тех пор, пока вы их не обнуляете, поэтому он увеличивает общий размер каждого из них.

1 голос
/ 26 августа 2011

Да, не сохраняйте объект в сеансе, по крайней мере, пользовательский объект.

Вы можете увидеть очень старые Railscasts об этом ..

http://railscasts.com/episodes/13-dangers-of-model-in-session

Это будетбыть плохим

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...