Zu Demonstrationszwecken: sagen, dass ich in dem Modul TodayDynamicDate
in das Modell am einschließlich Foo
unter:Rails dynamisch heutigen Datum zur Laufzeit zurückgeben
# app/models/concerns/today_dynamic_date.rb
module TodayDynamicDate
extend ActiveSupport::Concern
def todays_date
Date.today
end
end
#app/models/foo.rb
class Foo < ApplicationRecord
include TodayDynamicDate
end
Ich frage mich, ob in der Methode von #todays_date
, dass gemischte Verwendung funktioniert, wie ich will es.
Ich möchte, dass die Methode #todays_date
das Datum, an dem die Methode ausgeführt wurde, dynamisch zurückgibt. Ich möchte nicht, dass das statische Datum zurückgegeben wird, an dem der Rails-Server gestartet wurde.
Beispiel:
sagen, dass ich heute den Server booten, Friday, July 1st, 2016
. Hier ist, was erwarte ich, dass die Methode heute zurückzukehren:
Foo.new.todays_date
=> Fri, 01, Jul 2016
Der Server läuft weiter und es ist jetzt Tuesday, July 5th, 2016
. Das gleiche Verfahren wird in der App genannt und hier ist das, was ich erwarten zurückzukehren:
# dynamically returning the date that the method was called
Foo.new.todays_date
=> Tues, 05, July 2016
ich, dass es diese wird nicht Rückkehr sicherstellen wollen:
# returning a static date
Foo.new.todays_date
=> Fri, 01, Jul 2016
Frage: Will meine Implementierung einen dynamischen Datum zurückgeben? Wenn es kein dynamisches Datum zurückgibt: Wie würde ich das mit dieser eingemischten Methode todays_date
machen?
Vielen Dank für Ihre Antwort. Also sagst du, wenn 'todays_date' eine Klassenmethode wäre, dann würde es ein statisches Datum zurückgeben? – Neil
Eine Methode, entweder eine Klassen- oder Instanzmethode, gibt immer das aktuelle Datum und nicht einen alten zwischengespeicherten Wert zurück. Wenn Sie eine Klassenvariable verwenden würden, d. H. Wenn Sie "@@ today = todays_date" und "@@ today" in Ihrem Code verwendet hätten, stünden Sie in Schwierigkeiten –