current_user liefert Trueclass statt eines Benutzers in einem Controller Devise
-
27-09-2019 - |
Frage
Ich verwende Devise 1.0.8 auf einem Rails 2.3.8 Projekt. In meinem Controller Test habe ich:
context "when current_user is admin" do
should "render" do
sign_in Factory(:admin)
get :index
assert_response :success
end
end
Und in der Steuerung selbst, gibt es die folgenden before_filter:
def redirect_if_not_admin
puts current_user
redirect_to root_path unless current_user.try(:admin?)
end
Dies ist die Ausgabe von meinem Test:
true
false
NoMethodError: undefined method `admin?' for true:TrueClass
So current_user ist wahr, wenn ich sign_in im Test verwenden. Allerdings, wenn ich dies nicht tun, current_user ist gleich Null, so ist es auf jeden Fall betroffen. Vielen Dank im Voraus für jede Hilfe.
Lösung
habe ich das bestätigen! Verfahren für die Ressource in einem after_create / build statt die Attribute in der Werkseinstellung und das hat den Trick. current_user wahr ist gleich, wenn ein unbestätigter Benutzer auf der Website (jemand, der hat unterschrieben hat aber noch auf den Bestätigungslink an sie gesendeten klicken).