저는 세션 저장소로 Rails 2.3과 ActiveRecord를 사용하고 있습니다. 필요하기 전에 세션 생성을 피하고 싶습니다.요청이 끝나기 전에 레일스에서 세션을 유지하는 방법은 무엇입니까?
세션에 연결된 항목을 저장하는 Itens 테이블이 있습니다. 즉, 해당 모델에 연관 belongs_to :session
이 있습니다.
새 항목을 만들어야하는 Ajax 호출이 있습니다. 아직 세션이 없으면 항목에 연결될 세션을 만들어야합니다. 이 경우 세션 테이블의 ID가 필요하며 쿠키가 세션을 식별하는 데 사용되는 session_id는 필요하지 않습니다. 그러나 세션 레코드는 요청이 완료된 후에 만 DB에 만들어집니다. 예 :
def create
request.session_options[:id] # nil if there is no session yet
session[:activate] = 1 # this "creates" the sesssion (but not in DB)
request.session_options[:id] # now the new generated session_id
db_session = Session.find_by_session_id(request.session_options[:id]) # nil, not in DB yet :(
Item.new(
:session_id => db_session.id, # ops, id called for nil object
:data => params[:data]
)
end