2010-05-19 6 views
-2

J'ai une méthode qui passe par chaque jour de la semaine:Comment puis-je trouver toutes les datetime qui se produisent à une date particulière dans ruby?

def dates_week(d, delim) 
     "<tr>" + (d.beginning_of_week...(d.beginning_of_week+5)).map do |day| 
     "<#{delim}> #{yield(day)} </#{delim}>" 
    end.join + "</tr>" 

    end 

Pour chaque jour de la semaine, je brancher que comme un arg dans une méthode (ou peut-être un named_scope, n'ont pas compris que), qui produira alors le .count pour: tous les emails qui ont un: date_sent à cette date. Cependant,: date_sent est un horodateur date, donc je ne peux pas utiliser == comme je l'ai ci-dessous.

def sent_emails_by_date(date) 
    ContactEmail.find(:all, :conditions => "date_sent = '#{date}'" 
    ").count 
    end 

Par exemple, dans la vue ce que j'utilise:

<table class='reports'> 
    <%= dates_week(Date.today, "th") {|d| d.strftime("%A")} %> 
    <%= dates_week(Date.today, "td") {|d| sent_emails_by_date(d)}%> 
</table> 

Comment puis-je trouver tous les e-mails qui tombent le jour de la date passée à travers de la méthode qui fait une boucle à travers un semaine comme indiqué ci-dessus?

+0

Quel est le format de votre 'date' paramètre? –

+0

\t <% = dates_week (Date.today, "th") {| d | d.strftime ("% A")}%> \t <% = dates_week (Date.today, "td") {| d | send_emails_by_date (d)}%>
Angela

Répondre

0

Essayez

def send_emails_by_date(date) 
    ContactEmail.find(:all, :conditions => { :date_sent => (date.at_beginning_of_day)...(date.end_of_day)).count 
end 
Questions connexes