1
我使用Rails 2.3和ActiveRecord作爲會話存儲,我希望避免在需要之前創建會話。如何在請求結束之前在Rails中保持會話?
我有一個Itens表來存儲與會話相關的項目,即它的模型有一個關聯belongs_to :session
。
我有一個應該創建一個新項目的Ajax調用。當沒有會話時,它應該創建一個與該項目相關聯的會話。 爲此,我需要來自會話表的id,而不是用於通過cookie識別sesssion的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