如何重构此方法以返回最近的日期



我正在尝试查找联系人被标记为"完成"的最近时间。联系人属于用户。我的用户模型中有这种方法,但我知道它可能会改进。

  def last_contact_done_days
      date_array = self.contacts.find(:all, :select => "date_done").to_a
      most_recent = date_array.max
      last_done_days_ago = Date.today - most_recent[:date_done]
      return last_done_days_ago
  end

谢谢!

您可以使用此方法:

def last_contact_done_days # => date_done of the most recent contact if it exists
  contact = self.contacts.order('date_done DESC').first
  return contact.date_done if contact
  nil
end

或(使用try方法的较短版本):

def last_contact_done_days
  self.contacts.order('date_done DESC').first.try(:date_done)
end
你可以

这样重新定义它:

def last_contact_done_days
  Date.today - contacts.order('date_done DESC').first.date_done
end

最新更新