Я сказал бы даже, что никакая программа еще никогда не должна использовать. Если Вы делаете Вы напрашиваетесь на неприятности. Вы никогда не должны принимать, не является ли это X, это должен быть Y. Ваши тесты должны протестировать на каждого индивидуально и сбой после таких тестов.
Я столкнулся с той же проблемой программирование корзины покупок. На самом деле есть две проблемы. Начиная с rails 2.3, сеансы загружаются лениво, и сеанс [: session_id] больше не работает. Вы должны получить доступ к сеансу, прежде чем сможете с ним работать.
puts request.session_options[:id]
session[:session_id] # this forces load of the session in Rails 2.3.x
puts request.session_options[:id]
Это выводит:
nil
78eb1e371f3378ed98874f9ce372d652
Обновление : session.session_id устарело, поэтому используйте вместо него request.session_options [: id].
Обновление 2 : это будет исправлено в 3.x (а не в 2.3.5) https://rails.lighthouseapp.com/projects/8994/tickets/2268-rails-23-session_optionsid-problem
Greg
Я мог бы использовать этот патч для 2.3.5
http://github.com/rails/rails/commit/e0f1a7dc191ffebc9f6cadb6232e567fee8aa491
не добавляйте наследование хэша в CookieStore, хотя
Я предпочитаю использовать этот метод для регистрации ID сессии (но Rails 2.2 также сохраняет ID сессии в лог-файле без каких-либо изменений)
application_controller.rb
before_filter :log_session_id
private
def log_session_id
session[:session_id]
logger.info "Session ID: " + request.session_options[:id]
end
end