يقوم Current_user بإرجاع Trueclass بدلاً من مستخدم في وحدة تحكم باستخدام Prepise

StackOverflow https://stackoverflow.com/questions/4241329

سؤال

أنا أستخدم Inpise 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

وفي وحدة التحكم نفسها ، هناك ما يلي قبل _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 صحيح عندما أستخدم sign_in في الاختبار. ومع ذلك ، عندما لا أفعل ، يكون Current_user لا شيء ، لذا فمن المؤكد أنه يتأثر. شكرا مقدما على أي مساعدة.

هل كانت مفيدة؟

المحلول

لقد استخدمت التأكيد! الطريقة على المورد في efter_create/بناء بدلاً من تعيين السمات في المصنع والتي فعلت الخدعة. Current_user يساوي صحيحًا عندما يكون هناك مستخدم غير مؤكد على الموقع (شخص قام بالتسجيل ولكنه لم ينقر بعد على رابط التأكيد المرسلة إليهم).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top