Je me réfère au guide Rails et ainsi de suite. https://railsguides.jp/active_record_validations.html
【Ce que tu veux faire】 ・ Laissez votre nom et votre adresse e-mail vides pour ne pas pouvoir vous inscrire ・ Limite de caractères pour le nom et l'adresse e-mail
Le point est ① "présence: vrai" → Interdire l'enregistrement dans le vide ② "length: {maximum:}" → Interdire une longueur supérieure au nombre défini après ":"
Vous travaillerez sur le fichier app / models / user.rb. J'ai créé le code suivant.
class User < ApplicationRecord
validates :name, presence: true, length: { maximum: 20 }
validates :email, presence: true, length: { maximum: 300 },
end
Vérifiez la console Rails pour voir si cela fonctionne. Tout d'abord, lorsque j'essaye de m'inscrire dans le vide. .. ..
> User.create(name: "", email: "")
(0.3ms) BEGIN
(0.4ms) ROLLBACK
=> #<User id: nil, name: "", email: "", created_at: nil, updated_at: nil>
Il n'est pas enregistré par ROLLBACK.
Et si vous essayez d'enregistrer un nom long ou une adresse e-mail, vous pouvez voir que c'est aussi ROLLBACK (la partie marquée avec ... dans la colonne e-mail est trop longue pour être affichée dans l'article).
> 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>
Lors de l'affichage de la raison de l'erreur. .. ..
> user.errors.messages
> {:name=>["is too long (maximum is 20 characters)"],
:email=>["is too long (maximum is 300 characters)"]}
J'ai pu confirmer que "length: {maximum:}" fonctionne correctement.
À propos, la partie qui est maximale semble s'appliquer de diverses manières. (À partir du guide Rails ci-dessous)
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:L'attribut ne peut pas prendre une valeur inférieure à cette valeur.
:maximum:L'attribut ne peut pas prendre une valeur supérieure à cette valeur.
:dans ou:within:La longueur de l'attribut doit être comprise dans l'intervalle donné. La valeur de cette option doit être une plage.
:is:La longueur de l'attribut doit être égale à la valeur donnée.
Recommended Posts