我使用 Rails 2.3 和 ActiveRecord 作为会话存储,我想避免在需要之前创建会话。
我有一个 Itens 表来存储与会话关联的项目,即它的模型有一个关联belongs_to :session
。
我有一个应该创建一个新项目的 Ajax 调用。当还没有会话时,它应该创建一个与项目关联的会话。为此,我需要会话表中的 id,而不是用于识别 cookie 会话的 session_id。但是,会话记录仅在请求完成后才在数据库中创建。前任:
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