我厭倦了陷阱爲零時尋找一個從屬記錄當最的時間返回0將很好地做。我爲自己創建了什麼樣的麻煩,通過在NilClass中添加「id」NilClass定義
class NilClass
def id
0
end
end
什麼是非預期後果?我知道存在嗎?(),但不知何故認爲這可能更清潔。
您的想法?
我厭倦了陷阱爲零時尋找一個從屬記錄當最的時間返回0將很好地做。我爲自己創建了什麼樣的麻煩,通過在NilClass中添加「id」NilClass定義
class NilClass
def id
0
end
end
什麼是非預期後果?我知道存在嗎?(),但不知何故認爲這可能更清潔。
您的想法?
如果你真的有這個問題,你應該在你的數據庫中使用參照完整性。
如果必須對nil調用可能會或可能不存在或拋出某種錯誤的方法,你應該使用支票一拉
> nil.id if nil
=> nil
或Object#try
(是的ActiveSupport的一部分,現在我相信?),被警告 - 我認爲這是一種代碼味道。
> nil.try(:id)
=> nil
話雖這麼說,它比修改NilClass做一些意想不到的,想到什麼新的開發誰必須對您的項目工作所期望的少了味道。
這是不是意味着您需要檢查「id == 0」以確認存在? 更不用說提供過多的基本Ruby功能帶來的意想不到的後果 - 當您陷入語言內部時,很難預測其他庫和核心Rails API的行爲。不是說它不會工作,但很難成爲當然。
我會離開默認 - 它可以很好地工作,因爲Ruby允許「if object.association」表達式。
所以......你認爲檢查「0」比檢查'零'更可取嗎? – 2010-07-25 22:53:18
不要這樣做,請嘗試像奧馬爾建議的那樣。 – 2010-07-26 06:42:05