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.

War es hilfreich?

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).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top