[RUBY] [Rails] Utiliser la validation sur un contrôleur spécifique

introduction

J'écrirai sur ce qu'il faut faire si vous souhaitez qu'une validation particulière ne fonctionne que sur un contrôleur particulier.

Exemple concret

Par exemple, lorsque vous enregistrez des informations utilisateur, pensez au moment où vous souhaitez enregistrer les informations étape par étape.

Table des utilisateurs

column type
name string
email string
password string
address string
image string

Page 1: nom, email, mot de passe 2ème page: adresse, image

Considérez le processus d'enregistrement du nom, de l'e-mail et du mot de passe, puis de l'enregistrement de l'adresse et de l'image.

Si vous voulez rendre toutes les colonnes obligatoires, écrivez simplement presence: true dans le modèle et vous obtiendrez une erreur lors de l'enregistrement de la première page. (Parce que l'adresse et l'image sont vides)

Que dois-je faire si je souhaite utiliser des validations différentes sur les première et deuxième pages?

manière

Vous pouvez utiliser with_options pour chaque action. L'image est que vous nommez le groupe de validation comme with_options on: ~ do dans le modèle et utilisez la méthode valid? (Name) sur le contrôleur pour vérifier la validation.

La méthode d'écriture spécifique est la suivante. (Veuillez noter que certaines parties sont écrites avec une légère pause.)

modèle


with_options on: :step1 do
  validates :name, presence: true
  validates :email, uniqueness: true
  validates :password, presence: true, length: { minimum: 8 }
  validates :password, confirmation: true
end

with_options on: :step2 do
  validates :address, presence: true
  validates :image, uniqueness: true
end

contrôleur step1


def create
  @user = User.new(user_params)
  if @user.valid?(:step1) && @user.save
    return redirect_to step2_path
  end

  render :new
end

contrôleur step2


def update
  @user = User.find(params[:id])
  if @user.valid?(:step2) && @user.update(user_params)
    return redirect_to user_path
  end

  render :edit
end

Supplément

Si vous souhaitez appliquer toutes les validations en même temps, vous devez écrire comme valide? (: Step1) && valid? (: Step2), ce qui est un peu gênant ... (Je pensais que toutes les options with_options seraient utilisées uniquement par valid?, Mais cela n'a pas fonctionné)

Au fait, si vous souhaitez utiliser correctement create et update, veuillez vous reporter à l'article ici. (Bien qu'il y ait une partie qui chevauche ce post ...)

Recommended Posts

[Rails] Utiliser la validation sur un contrôleur spécifique
Publier des vidéos sur les rails
[Rails] Comment utiliser la validation
Résumé de la validation Ruby on Rails
Appliquer le CSS à une vue spécifique dans Ruby on Rails
Comment utiliser Ruby on Rails
Un mémorandum sur l'utilisation d'Eclipse
Modèle [Ruby on Rails], commande de terminal de contrôleur
Essayez de déployer l'application Rails sur EC2-Part 1-
[Ruby on Rails] Test du contrôleur avec RSpec
Commande de création / suppression du contrôleur Ruby on Rails
[Ruby on Rails] Comment utiliser redirect_to
Lorsque vous souhaitez que Rails désactive une session pour un contrôleur spécifique
Paramètres de validation pour la fonction de connexion Ruby on Rails
Ajoutez une fonction de balise aux rails. Utilisez actes-comme-taggable-on
Utiliser ControlsFX / Validation
Vent arrière sur les rails
[rails] Définir la validation
Présentation de Rspec, un framework de test pour Ruby on Rails
[Ruby on Rails] Un mémorandum de modèles de mise en page
(Ruby on Rails6) Création de données dans une table
[Pour les débutants] Procédure de création d'un contrôleur à l'aide de rails
[Rails5] Rspec -validation-
À propos du contrôleur Rails
[Rails] Utiliser jQuery
J'ai fait un portfolio avec Ruby On Rails
Une histoire comparant les frameworks frontaux sur les applications Rails existantes
Créer un environnement de développement Ruby on Rails sur AWS Cloud9
Utilisez Vue.js avec CDN (copiez et collez uniquement!)
Je veux utiliser une petite icône dans Rails
Comment faire fonctionner JavaScript sur une page spécifique
Utilisez java1.7 (zulu7) dans un répertoire spécifique avec jenv
Explication de Ruby sur rails pour les débutants ⑥ ~ Création de validation ~
Une facture élevée d'AWS lors du développement sur rails ...
[Rails] Comment charger JavaScript dans une vue spécifique
Lancez EC2 Rails
Utiliser perltidy sur CentOS 8
[Rails] Personnaliser la validation de l'appareil
Utilisez mod_auth_cas sur CentOS 8
Déployer RAILS sur EC2
Ruby on Rails élémentaire
Principes de base de Ruby on Rails
Utiliser des images avec des rails
Ouais, je suis sur des rails!
Utiliser Corretto 11 avec Heroku
Utiliser cpplapack avec ubuntu
Association Ruby On Rails
Difficultés à créer un environnement Ruby on Rails (Windows 10) (SQLite3)
[Ruby on Rails] Ajouter une colonne avec des contraintes de clé externe
Une note sur la fonction de départ de Ruby on Rails