【发布时间】:2011-12-02 23:07:41
【问题描述】:
我使用 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
【问题讨论】:
标签: ruby-on-rails session activerecord session-store