Pergunta

Estou usando o Devise 1.0.8 em um projeto Rails 2.3.8. No meu teste de controlador, eu tenho:

context "when current_user is admin" do
  should "render" do
    sign_in Factory(:admin)
    get :index
    assert_response :success
  end
end

E no próprio controlador, há o seguinte antes_filter:

def redirect_if_not_admin
  puts current_user
  redirect_to root_path unless current_user.try(:admin?)
end

Esta é a saída do meu teste:

true
false

NoMethodError: undefined method `admin?' for true:TrueClass

Portanto, current_user é verdadeiro quando eu uso o SIGN_IN no teste. No entanto, quando eu não, o current_user é nulo, então está definitivamente sendo afetado. Agradecemos antecipadamente por qualquer ajuda.

Foi útil?

Solução

Eu usei a confirmação! Método no recurso em um After_Create/Build em vez de definir os atributos na fábrica e isso fez o truque. current_user é igual a verdade quando há um usuário não confirmado no site (alguém que se inscreveu, mas ainda não clica no link de confirmação enviado a eles).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top