2010-12-26 12 views
2

ich habe einen „Job“ Modul (und entsprechende Tabelle in der db), das Modul haben ein Feld namens scheduled_run (Datumzeit) und ein user_id genannt Feldes:Rubin - immer Aufzeichnungen nach Datum gefiltert

  1. wie kann Ich bekomme alle Jobs, die einem Benutzer gehören und für heute geplant sind?
  2. Wie bekomme ich alle Jobs, die zu einem Benutzer gehören und für die letzte Woche geplant sind?
+0

Anstelle von "Modul" meinst du "Klasse"? –

Antwort

1

Um alle Arbeitsplätze zu erhalten, die einem Benutzer gehören und für heute geplant, werden Sie für alle scheduled_runs innerhalb der heutigen Zeit suchen müssen:

user = User.find(1) # Will get the user with ID 1 
jobs = Job.where("user_id = :id AND scheduled_run >= :start AND scheduled_run < :end", 
       :id => user.id, 
       :start => Date.today, 
       :end => 1.day.from_now.to_date) 

für letzte Woche alle Arbeitsplätze zu erhalten , werden wir einen ähnlichen Befehl tun, aber wir werden wechseln :start und :end der Beginn und das Ende der Woche zu sein:

user = User.find(1) # Will get the user with ID 1 
jobs = Job.where("user_id = :id AND scheduled_run >= :start AND scheduled_run < :end", 
       :id => user.id, 
       :start => 1.week.ago.to_date, 
       :end => Date.today) 

In beiden der oben genannten Befehle werden to_dateActiveRecord verursachen th zu behandeln Das Ergebnis DateTime als Beginn des Tages.

1

Etwas wie:

Job.where(:user_id => some_user_id, :scheduled_run => Date.today).all 

Um die, die für die letzte Woche finden Sie einen Datumsbereich angeben benötigen. Ich werde dich diesen Teil herausfinden lassen. Sie sollten eine "Bereichsbedingung" oder "Subset-Bedingung" verwenden, die im ActiveRecord-Handbuch erwähnt wird.

Die Schienen ActiveRecord Guide ist gut zu lesen. Siehe auch den Abschnitt "Bedingungen" im Dokument ActiveRecord doc.

0

Ist es einfach Rubin oder verwenden Sie Schienen oder andere ORM/Rahmen? Ich werde so viel übernehmen, da die questiontag active markiert

Es ist wie dies geschehen könnte:

Job.where("user_id = ? AND datetime = ?", user_id, datetime).all 

mehr innerhalb der Rails-Dokumentation hier http://api.rubyonrails.org/classes/ActiveRecord/Base.html

Sie auch Datumsbereiche nutzen könnten, nur graben ein wenig um die Dokumente;)

Verwandte Themen