current_user возвращает TrueClass вместо User в контроллере, использующем Devise - PullRequest
0 голосов
/ 22 ноября 2010

Я использую Devise 1.0.8 в проекте Rails 2.3.8. В моем тесте контроллера у меня есть:

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

А в самом контроллере есть следующий before_filter:

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

Это результат моего теста:

true
false

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

То есть current_user имеет значение true, когда я использую sign_in в тесте. Однако, когда я этого не делаю, current_user равен nil, так что это определенно затрагивается. Заранее спасибо за любую помощь.

1 Ответ

2 голосов
/ 23 ноября 2010

Я использовал подтверждение! метод на ресурсе в after_create / build вместо установки атрибутов на фабрике, и это помогло. current_user равно true, если на сайте есть неподтвержденный пользователь (тот, кто зарегистрировался, но еще не нажал на ссылку для подтверждения, отправленную ему).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...