Ruby on rails 如何正确处理模型中的零?

Ruby on rails 如何正确处理模型中的零?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个方法链,在任何时候,其中一个可以根据返回的内容(集合)返回nil,然后该集合上的方法将爆炸,因为它是nil 我不知道如何妥善处理这些案件?我应该在每个函数中执行if语句并显式返回方法以停止执行,还是该怎么做 undefined method `created_at' for nil:NilClass # ./app/models/exercise.rb:132:in `last_placeholder_log_date' # ./app/models/exercise.rb:136:in

我有一个方法链,在任何时候,其中一个可以根据返回的内容(集合)返回nil,然后该集合上的方法将爆炸,因为它是nil

我不知道如何妥善处理这些案件?我应该在每个函数中执行if语句并显式返回方法以停止执行,还是该怎么做

undefined method `created_at' for nil:NilClass
# ./app/models/exercise.rb:132:in `last_placeholder_log_date'
# ./app/models/exercise.rb:136:in `placeholder_log_entries'
# ./app/models/exercise.rb:140:in `placeholder_log_entries!'

def last_placeholder_log_date(user)
  self.last_log_entry(user, true).created_at.beginning_of_day
end
如果没有最后一个日志条目,我如何优雅地处理这种可能性?

您可以使用:

使用
try
,可以确保在接收器未响应时不会引发异常。如果接收器没有响应,则呼叫返回
nil

将代码写入:

def last_placeholder_log_date(user)
  val = last_log_entry(user, true)
  val.created_at.beginning_of_day unless val.nil?
end
def last_placeholder_log_date(user)
  val = last_log_entry(user, true)
  val.created_at.beginning_of_day unless val.nil?
end