Ich habe dieses Codeelement in einem Modell, das ein Startdatum und ein Enddatum entsprechend der Tageszeit festlegt, zu der die Methode ausgeführt wird.Wie kann ich diesen Code nicht in meinen Modellen wiederholen?
Lassen Sie uns springen rechts in den Codebeispiel:
#MODEL
now = Time.now
if now.hour >= 17 && now.hour <= 23
#night
n = now+1.day
startd = Time.local(now.year, now.month, now.day, 17, 00, 00)
endd = Time.local(n.year, n.month, n.day, 8, 00, 00)
elsif now.hour >= 0 && now.hour <= 7
#morning
n = now-1.day
startd = Time.local(n.year, n.month, n.day, 8, 00, 00)
endd = Time.local(now.year, now.month, now.day, 17, 00, 00)
end
dann in einem Modell (gleich oder einen anderen), Ich versuche, diese Funktion in einem Fund zu laufen.
#MODEL(SAME OR OTHER)
Model.find(:all,
:conditions => ['created_at >= ? AND created_at <= ?', startd, endd])
Das Problem ist, dass ich diese Funktion verwenden, werde die Start- und Ende viel geht, und ich weiß nicht, wo es zu platzieren mich nicht wiederholen. Es wird von verschiedenen Modellen verwendet werden.
Danke für jede Hilfe.
Das klang wie eine gute Lösung, ich habe das schon versucht, aber es gab mir "undefined Methode' calc_start_and_end_times 'für # "Fehler. Ich habe das Modul über meiner Modellklasse eingefügt. Irgendeine Idee? –
mickey
Versuchen Sie, def self.calc_start_and_end_times zu def calc_start_and_end_times zu ändern Ich konnte mich nicht erinnern, ob Sie selbst oder nicht auf der Methodendefinition benötigen. – erik
Versuchte das auch, Entschuldigung dafür, nicht zu erwähnen. Es klingt, als ob das Modell vom Modul aus nicht auf die Methode zugreifen kann. – mickey