Я бы скопировал контроллеры Devise и добавил фильтр перед следующим образом:
class Users::SessionsController < Devise::SessionsController
before_filter :logout_admin, :only => "create"
def create
super
end
private
def logout_admin
# change :admin to :user in the admin's session controller
# the sign_out is a devise controller helper that forces sign out
sign_out :admin
end
end
Затем для тестирования вы можете получить доступ к текущему пользователю в функциональных (контроллерных) спецификациях, вызвав subject.current_user или subject.current_admin, перейдите сюда: https://github.com/plataformatec/devise, чтобы убедиться, что включены тестовые помощники, а затем попробуйте что-то вроде это:
require 'spec_helper'
describe Users::SessionsController do
login_admin
describe "POST create" do
it "should logout admin" do
post :create, {:user => {:email => "tester@email.com", :password => "secret"} }
subject.current_user.should_not be_nil
subject.current_admin.should be_nil
end
end
end