0
運行RSpec和FactoryGirl時,它會自動將任何:id
參數轉換爲fixnum,而在現實生活中,它會作爲字符串傳遞。代碼我有那個:id
作爲複合主鍵的進程試圖調用分割params[:id]
。這導致異常,像這樣:爲什麼is_a?無法匹配類型,並導致分裂引發異常?
NoMethodError:
undefined method 'split' for 234:Fixnum
當試圖調用是這樣的:
@myinstance = MyClass.find(params[:id].split("-").map{|x| x.to_i})
在試圖解決這個問題,我添加了一個簡單的類型檢查:
if params[:id].is_a? Fixnum
@myinstance = MyClass.find(params[:id])
else
@myinstance = MyClass.find(params[:id].split("-").map{|x| x.to_i})
end
然而,這並不像我預期的那樣工作。 if
語句評估爲false
,並且split
仍在嘗試,導致相同的錯誤。 Ruby如何將params[:id]
識別爲「else
」邏輯中的Fixnum,但在if
語句中未能評估爲true
?
不錯的心靈調試。 –
@ muistooshort:地獄是的,不幸的是,我很難學會它:我的規格已經過去了,但是我的產品正在崩潰... – apneadiving
我們是人類,我們只是學習困難的方式:) –