Я использую Rails 2.3 и ActiveRecord в качестве хранилища сессий, и я хочу избежать создания сессий до того, как это потребуется.
У меня есть таблица Itens для хранения элементов, связанных с сессией, т. Е. Ее модель имеетассоциация belongs_to :session
.
У меня есть вызов Ajax, который должен создать новый элемент.Когда сеанса еще нет, он должен создать тот, который будет связан с элементом.Для этого мне нужен идентификатор из таблицы сессий, а не идентификатор_ сеанса, используемый для идентификации сеанса с помощью cookie.Но запись сеанса создается в БД только после завершения запроса.Пример:
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