私はセッションストアとしてRails 2.3とActiveRecordを使用しています。セッションが必要になる前にセッションを作成しないようにしたいと思います。要求が終了する前にセッションを永続化する方法はありますか?
セッションに関連付けられたアイテムを格納するためのItensテーブルがあります。つまり、そのモデルにはアソシエートbelongs_to :session
があります。
新しいアイテムを作成する必要があるAjax呼び出しがあります。セッションがまだ存在しない場合は、アイテムに関連付けるセッションを作成する必要があります。 このためには、セッションテーブルのIDを必要としますが、セッションIDはCookieの識別に使用しません。 しかし、セッションレコードは、要求が完了した後でのみ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