2014-05-19 7 views
5

के साथ बुलाया निरंतरता मेरे रेल आवेदन में मुझे ब्रैकमेन से निम्नलिखित सुरक्षा चेतावनी मिल रही है। असुरक्षित प्रतिबिंब विधि मॉडल विशेषता के साथ बुलाया निरंतर। यहां मेरा कोड क्या कर रहा है।ब्रैकमेन असुरक्षित प्रतिबिंब विधि मॉडल विशेषता

 

chart_type = Chart.where(
    id: chart_id, 
).pluck(:type).first 

begin 
    ChartPresenter.new(chart_type.camelize.constantize.find(chart_id)) 
rescue 
    raise "Unable to find the chart presenter" 
end 
 

मेरे शोध से मुझे कोई ठोस समाधान नहीं मिला है। मैंने सुना है कि आप एक श्वेतसूची बना सकते हैं लेकिन मुझे यकीन नहीं है कि ब्रैकमैन क्या देख रहा है। मैंने एक सरणी बनाने और निरंतर कॉल करने से पहले इसके खिलाफ जांच करने की कोशिश की और ब्रेकमैन अभी भी शिकायत करता है। इसके साथ कोई मदद महान होगा। अगर आपको लगता है कि यह एक आवश्यक फिक्स नहीं है तो क्या आप विवरण दे सकते हैं कि यह चिंता क्यों नहीं होनी चाहिए?

उत्तर

11

आप अन्य तरह से चारों ओर जा सकते हैं, वर्ग जिसका नाम chart_type की है खोजने:

chart_class = [User, Category, Note, Post].find { |x| x.name == chart_type.classify } 
if chart_class.nil? 
    raise "Unable to find the chart presenter" 
end 
ChartPresenter.new(chart_class.find(chart_id)) 

इस तरह brakeman खुश होना चाहिए, और आप अधिक सुरक्षित हैं ...

+0

मुझे लगता है कि अनुमान लगा रहा हूँ यह सही होने के बावजूद कोड धीमा हो जाएगा? – wallerjake

+0

दरअसल, मुझे लगता है कि यह तेज़ होगा, क्योंकि कोई निरंतर लुकअप नहीं है ... –

+0

वह सूची [उपयोगकर्ता, श्रेणी, नोट, पोस्ट] एक गतिशील सूची होने जा रही है, हालांकि यह एक समस्या होगी? मतलब मुझे अभी भी स्थिर करना होगा? सूची इसे टाइप करने के लिए थोड़ी देर तक है। चूंकि यह गतिशील है, इसलिए हमें इसे अद्यतन रखना होगा। – wallerjake

संबंधित मुद्दे