рельсы 3, героку, как пользоваться сессиями - PullRequest
8 голосов
/ 15 февраля 2011

Я видел отличный ответ о том, как настроить сеансы для рельсов 3 ( Текущая практика сессий Rails )

мы собираем серию вопросов от пользователя, и я хотел бы сохранить на сессии список их ответов, пока мы не дойдем до конца, а затем записать все это ...

но я не уверен, как писать и читать информацию из сеанса ... будет полезен любой быстрый указатель о том, как сохранить, например, содержимое хеша

Кроме того, из-за того, что наше приложение, размещенное в сети в Heroku, изменится, как мы могли / должны обрабатывать сессии?

Cheers, JP

Ответы [ 2 ]

18 голосов
/ 15 февраля 2011

Вам не нужно ничего менять для Heroku. По умолчанию сеансы Rails хранятся в зашифрованном файле cookie, поэтому настройка на стороне сервера не требуется.

Однако cookie может хранить только 4096 байт данных. Если вы храните много данных в сеансе (что обычно не рекомендуется), вы можете переполнить cookie. В этом случае вы можете настроить файлы cookie ActiveRecord или Memcached. И то, и другое легко сделать, и это не совсем проблемы Heroku. Если вам нужна помощь в этом, вы всегда можете задать еще один вопрос StackOverflow. Пока это не беспокоит, пока вы не достигнете предела.

Некоторый примерный код для хранения и чтения ваших ответов в сеансе, при условии, что Вопрос и Ответ являются моделями ActiveRecord:

def store_answer(question, answer)
  session[:answers] ||= {}
  session[:answers][question.id] = answer.id
end

def read_answer(question)
  Answer.find(session[:answers][question.id])
end
4 голосов
/ 15 февраля 2011

Сеансы в Rails очень просты в использовании, просто используйте сессионную хэш-подобную структуру следующим образом:

  • (установить) сессия [: my_name] = "Джо"
  • (чтение) ставит сессию [: my_name]

Не думаю, что вам придется что-то менять для развертывания на Heroku.

...