Stellen Sie die Start- und Endzeit am Schwarzen Brett ein und erstellen Sie eine Website, um Personen zu rekrutieren. Stellen Sie die Validierung so ein, dass die Endzeit nicht vor der Startzeit liegt. (* Fügen Sie außerdem die Bestätigung hinzu, dass die Startzeit nicht vor dem aktuellen Datum und der aktuellen Uhrzeit liegt.)
Ruby 2.5.0 Rails 6.0.3.4
Stellen Sie beim Erstellen eines Rekrutierungsausschusses so ein, dass Sie die Start- und Endzeit eingeben können.
Dieses Mal heißt die Rekrutierungsversion Board. Der Inhalt der Tabelle ist wie folgt: ↓
XXXX_create_boards.rb
class CreateBoards < ActiveRecord::Migration[6.0]
def change
create_table :boards do |t|
(Weggelassen)
t.datetime :start_time, null: false
t.datetime :finish_time, null: false
t.timestamps
end
end
end
Stellen Sie die Startzeit in der Spalte "start_time" und die Endzeit in der Spalte "finish_time" ein.
Ich habe die folgenden Validierungen festgelegt.
models/board.rb
validates :start_time, presence: true
validates :finish_time, presence: true
validate :start_finish_check
validate :start_check
def start_finish_check
errors.add(:finish_time, "Bitte wählen Sie eine Zeit später als die Startzeit") if self.start_time > self.finish_time
end
def start_check
errors.add(:start_time, "Bitte wählen Sie eine Zeit nach dem aktuellen Datum und der aktuellen Uhrzeit") if self.start_time < Time.now
end
Ich werde jeden von ihnen kurz erklären.
models/board.rb
validate :start_finish_check
validate :start_check
Hier überprüfen wir jeden Prozess. Beachten Sie, dass es "validieren" statt "validieren" ist. Wenn es "validieren" ist, wird die Fehlermeldung "Sie müssen mindestens eine Validierung angeben" angezeigt.
def start_finish_check
errors.add(:finish_time, "Bitte wählen Sie eine Zeit später als die Startzeit") if self.start_time > self.finish_time
#↑ um Startzeit und Endzeit zu vergleichen
end
def start_check
errors.add(:start_time, "Bitte wählen Sie eine Zeit nach dem aktuellen Datum und der aktuellen Uhrzeit") if self.start_time < Time.now
#↑ zum Vergleichen der Startzeit und des aktuellen Datums und der aktuellen Uhrzeit
end
Hier vergleichen wir jedes Mal. Wenn if
wahr ist, wird eine Fehleranweisung hinzugefügt. Es ist nicht notwendig, es zu schreiben, aber es ist auch möglich, die Richtung der Ungleichungszahl ">" und "wenn" als "es sei denn" umzuschreiben. Der gleiche Vorgang wird auch ausgeführt, ohne "self" zu schreiben.
Dieser Bereich ist Ihre Wahl.
Diesmal war es ein Vergleich des Datetime-Typs, aber ich denke, dass er für andere Typen auf die gleiche Weise implementiert werden kann. ↓ ist ein Referenzartikel zum Abrufen von Datum und Uhrzeit Aktuelles Datum und Uhrzeit mit Ruby abrufen [Unterschiede zwischen Zeit, Datum, DateTime, TimeWithZone zwischen Ruby und Rails] (https://qiita.com/jnchito/items/cae89ee43c30f5d6fa2c)
Überprüfen des Datums- / Uhrzeittyps vor und nach der Eingabe mit Schienen [Validierung] Schienen So legen Sie nach dem heutigen Datum fest
Recommended Posts