يقوم Current_user بإرجاع Trueclass بدلاً من مستخدم في وحدة تحكم باستخدام Prepise
-
27-09-2019 - |
سؤال
أنا أستخدم 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 يساوي صحيحًا عندما يكون هناك مستخدم غير مؤكد على الموقع (شخص قام بالتسجيل ولكنه لم ينقر بعد على رابط التأكيد المرسلة إليهم).
لا تنتمي إلى StackOverflow