我在做的東西一樣檢查無結果的ActiveRecord查詢
def ServerInfo.starttime(param)
find(:all, :conditions => "name ='#{param}_started'", :select => "date").first.date.to_datetime
end
現在,這個問題不相關的原因,模型的幾個地方,它可以發生,這種特定的行不在數據庫和上面的代碼失敗,NoMethodError (undefined method `date' for nil:NilClass):
。我目前的解決辦法是
res = find(:all, :conditions => "name ='#{param}_started'", :select => "date")
check_time = res.first.nil? ? 0 : res.first.date.to_datetime
這找工作,但我覺得這是不對的灑代碼所有的地方。有沒有更多的ruby-ish/rail-ish方法來防止解除引用nil?
我會使用try方法,這非常有用。 – 2010-09-15 14:48:12
甜,不知道Rails'try'。出於簡潔的原因,我就是這麼想的。 – jhwist 2010-09-16 07:52:21