сеансы в Rails

#ruby-on-rails

#ruby-on-rails

Вопрос:

Я читаю Agile web Development, чтобы изучить Rails 3.0. Автор учит нас, как использовать сеансы, используя этот метод create в контроллере сеансов.

 def create 

if user = User.authenticate(params[:name], params[:password])
session[:user_id] = user.id
redirect_to admin_url
else
redirect_to login_url, :alert => "Invalid user/password combination"
end 

end
  

В строке

сеанс [:идентификатор пользователя] = user.id

:user_id существует ли где-нибудь символ до того, как он ему назначит user.id ? или этот символ: user_id создается в тот момент, когда он назначает user.id к нему? Существует ли определенное количество символов, принадлежащих этому «сеансу», или вы можете просто создать что-то с любым именем и назначить ему что-либо?

Ответ №1:

Он создается динамически «на лету». Вы можете увидеть, что находится в сеансе, используя отладчик и набрав p session текст . Если вы храните только строковые данные, то вы можете хранить все, что захотите, хотя есть ограничения по размеру. Сеанс по умолчанию хранится в файле cookie, хотя вы также можете настроить свой SessionStore так, чтобы он также находился на стороне сервера.

Я не уверен, что вы можете изменить имя с помощью файла конфигурации, но session хэш — это специальная переменная, которую использует Rails. Итак, вы должны придерживаться выполнения session[:my_var] = "whatever'

Комментарии:

1. итак, вы могли бы назвать это как-то иначе (предполагая, что вы не хотите следовать соглашениям об именах)?