Ich beziehe mich auf die Rails-Anleitung und so weiter. https://railsguides.jp/active_record_validations.html
【Was du machen willst】 ・ Lassen Sie Ihren Namen und Ihre E-Mail-Adresse leer, damit Sie sich nicht registrieren können ・ Zeichenbegrenzung für Name und E-Mail-Adresse
Der Punkt ist ① "Anwesenheit: wahr" → Registrierung im Leerzeichen verbieten ② "Länge: {Maximum:}" → Länge länger als die nach ":" festgelegte Zahl verbieten.
Sie arbeiten an der Datei app / models / user.rb. Ich habe den folgenden Code erstellt.
class User < ApplicationRecord
validates :name, presence: true, length: { maximum: 20 }
validates :email, presence: true, length: { maximum: 300 },
end
Überprüfen Sie die Rails-Konsole, um festzustellen, ob sie funktioniert. Zuallererst, wenn ich versuche, mich in der Lücke zu registrieren. .. ..
> User.create(name: "", email: "")
(0.3ms) BEGIN
(0.4ms) ROLLBACK
=> #<User id: nil, name: "", email: "", created_at: nil, updated_at: nil>
Es ist nicht von ROLLBACK registriert.
Wenn Sie versuchen, einen langen Namen oder eine E-Mail-Adresse zu registrieren, sehen Sie, dass dies auch ROLLBACK ist (der mit ... gekennzeichnete Teil in der E-Mail-Spalte ist zu lang, um im Artikel angezeigt zu werden).
> user = User.create(name: "a"*25 , email: "b"*350 + "@test.com")
> (0.3ms) BEGIN
> (0.4ms) ROLLBACK
=> #<User:
id: nil,
name: "aaaaaaaaaaaaaaaaaaaaaaaaa",
email:"[email protected]",
created_at: nil,
updated_at: nil>
Bei der Anzeige des Grundes für den Fehler. .. ..
> user.errors.messages
> {:name=>["is too long (maximum is 20 characters)"],
:email=>["is too long (maximum is 300 characters)"]}
Ich konnte bestätigen, dass "Länge: {Maximum:}" ordnungsgemäß funktioniert.
Übrigens scheint der maximale Teil auf verschiedene Arten anwendbar zu sein. (Aus der Rails-Anleitung unten)
class Person < ApplicationRecord
validates :name, length: { minimum: 2 }
validates :bio, length: { maximum: 500 }
validates :password, length: { in: 6..20 }
validates :registration_number, length: { is: 6 }
end
:minimum:Das Attribut kann keinen kleineren Wert als diesen Wert annehmen.
:maximum:Das Attribut kann keinen Wert annehmen, der größer als dieser Wert ist.
:in oder:within:Die Länge des Attributs muss innerhalb des angegebenen Intervalls liegen. Der Wert dieser Option muss ein Bereich sein.
:is:Die Länge des Attributs muss dem angegebenen Wert entsprechen.