У меня есть несколько мест в модели, которые делают что-то вроде
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?