2016-09-22 13 views
14

मैं सिर्फ रेल के लिए 5 उन्नत बनाया है और सब कुछ बहुत ठग चला गया, लेकिन कोई स्पष्ट कारण के लिए एक विधि है कि skip_before_action के बाद कहा जाता है की अनुमति नहीं दे rspec इस संदेश के साथ चलाने के लिएskip_before_action और रेल 5

Before process_action callback :redirect_heroku_user has not been defined (ArgumentError) 

यह सुपर अजीब बात है

# application_controller.rb 
def redirect_heroku_user 
    redirect_to root_path if heroku_user? 
end 

# some_controller.rb 
skip_before_action :redirect_heroku_user, only: :edit 
+0

आप एक before_action है? मुझे लगता है कि वास्तविक त्रुटि आपको बता रही है कि आप पहले_एक्शन को छोड़ नहीं सकते क्योंकि पहले से ही वास्तव में सेट नहीं किया गया था। मैं गलत हो सकता हूं, लेकिन रेल जोड़ना: सुझाए गए उत्तरों के रूप में झूठ कुछ ऐसा लगता है जो आपको तब तक नहीं करना चाहिए जब तक कि आपको वास्तव में उत्पादन के लिए इसकी आवश्यकता न हो। – arieljuod

उत्तर

16

अनुसार this thread

रहे हैं: क्योंकि यह रेल 4. यहाँ पर सिर्फ ठीक काम करता है मेरी कोड है

ActiveSupport::Callbacks#skip_callback now raises an ArgumentError if an unrecognized callback is removed.

तो अपने समाधान skip_before_action को raise: false विकल्प पारित करने के लिए है:

skip_before_action :redirect_heroku_user, raise: false 

अधिक जानकारी के लिए changelog देखें।

2

रेल 5 में, यदि विधि redirect_heroku_user उसी नियंत्रक में परिभाषित नहीं है, तो यह अपवाद उठाता है।

आप पास कर सकते हैं raise: falsementioned here के रूप में यह से बचने के लिए: कहीं और redirect_heroku_user:

skip_before_action :redirect_heroku_user, only: :edit, raise: false 
संबंधित मुद्दे