0

連絡先が「完了」とマークされた最新の時刻を見つけようとしています。連絡先はユーザーに属します。私のユーザーモデルにはこの方法がありますが、おそらく改善できると思います。

  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

ありがとう!

4

2 に答える 2

3

この方法を使用できます。

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
于 2012-11-16T21:46:53.793 に答える
1

あなたはそれをこのように再定義することができます:

def last_contact_done_days
  Date.today - contacts.order('date_done DESC').first.date_done
end
于 2012-11-16T21:51:07.957 に答える