С mongo_session_store-rails3 сеанс не работает - PullRequest
1 голос
/ 03 апреля 2012

У меня проблема с сессиями в rails 3.2, когда я использую mongoid в качестве SessionStore.Я решил использовать Brian Hempel gem mongo_session_store gem, так как он был обновлен в прошлом месяце.

Перед переключением на этот гем я использовал хранилище сеансов по умолчанию на основе файлов cookie иэто работало без проблем.Но теперь даже flash не работает, когда я перенаправляю на другую страницу.Кажется, данные сеанса сбрасываются при каждом отдельном запросе.

И как дополнительный вопрос: каждый запрос создает новый документ сеанса в базе данных!Это правильно?Я не совсем понимаю.= (

Я помещаю эти строки в мой Gemfile:

gem 'mongoid', :git => 'git://github.com/mongoid/mongoid.git'
gem 'bson_ext', "~> 1.5"
gem 'mongo_session_store-rails3', '~> 3.0.5'

Затем в моем config/initializers/session_store.rb:

SomeAppName::Application.config.session_store :mongoid_store

session_controller.rb:

class SessionsController < ApplicationController
  def new
    ...
  end
  def create
    user = User.find_by_identifier(params[:identifier])
    if user && user.authenticate(params[:password])
      session[:uid] = user._id
      redirect_to root_url, :notice => "Logged in!"
    else
      flash.now.alert = "Invalid email or password"
      render :new
    end
  end
  def destroy
    ...
  end
end

Если нужна какая-либо другая часть моего кода, пожалуйста, сообщите мне об этом. Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 03 января 2013

Автор Gem здесь.Только что вышла версия 4.0.0, которая поддерживает Mongoid 3.

gem 'mongo_session_store-rails3', '~> 4.0.0'
1 голос
/ 23 сентября 2012

Имеют похожие и другие проблемы в моем проекте.После перехода на ветку cubewebsites все работает как положено.

Описание ветки:

Эта вилка предназначена для решения пары проблем, которые у меня были с мастеромфилиал:

 <class:Session>': undefined method `collection_name=' for ActionDispatch::Session::MongoidStore::Session:Class (NoMethodError)

и

 <class:Session>': uninitialized constant ActionDispatch::Session::MongoidStore::Session::BSON (NameError)
...