[RUBY] [Contrainte Rails / Unicité] Comment vérifier la validation du modèle sur la console / Contrainte d'unicité pour plusieurs colonnes

Statut


Cette validation peut être réalisée en utilisant la "contrainte d'unicité".

Cette fois, il s'agit d'un enregistrement de l'opération sur la console lancée par les rails c pour voir si cela est correctement implémenté.


environnement


Ce code

app/models/permission.rb



class Permission < ApplicationRecord
  belongs_to :user
  belongs_to :task

  validates :user_id, uniqueness: { scope: :task_id }
end

Soit dit en passant, il s'agit d'une restriction sur l'application, et pour être exact, il est également nécessaire d'appliquer une restriction côté DB (<a href-"https://railsguides.jp/active_record_validations.html#uniqueness:title"> Rails Guide < À partir de / a>). Cependant, je ne le comprends pas encore, je vais donc l'omettre cette fois.



Commandes entrées sur la console

Je voulais vérifier la contrainte d'unicité, j'ai donc exécuté le code selon le flux suivant.


J'ai lancé la console dans le terminal et vérifié.

teminal


$ rails c

[1] > permission = Permission.find(1)
=> #<Permission:*** id: 1, user_id: 1, task_id: 1, ***>

[2] > new.valid?
=> true

C'est devenu vrai ... J'ai pensé à la cause et j'ai changé la commande.


Changement de cause et de commande

[Cause] ▶ "find" est une méthode ActiveRecord qui recherche les enregistrements existants ▶ Si vous enregistrez ceci, cela ressemblera-t-il à une sauvegarde par écrasement?

【Changement】 ▶ Tapez directement user_id et task_id


terminal


$ rails c

[1] > Permission.find(1)
=> #<Permission:*** id: 1, user_id: 1, task_id: 1, ***>

[2] > permission = Permission.new(user_id: 1, task_id: 1)
=> #<Permission:*** id: nil, user_id: 1, task_id: 1, ***>

[3] > permission.valid?
=> false

[4] > permission.errors.full_messages
=> "User has already been taken"

J'ai pu confirmer que c'était complètement faux.


Sommaire


J'étais un peu accro, mais j'ai réussi à m'en remettre. Afin de vraiment comprendre, il semble nécessaire de savoir ce qui fonctionne derrière save and valid.


J'ai encore beaucoup à étudier, mais je vais les réduire un par un.


Article de référence


Recommended Posts

[Contrainte Rails / Unicité] Comment vérifier la validation du modèle sur la console / Contrainte d'unicité pour plusieurs colonnes
Comment déboguer le traitement dans le modèle Ruby on Rails avec juste la console
Comment vérifier les commandes Rails dans le terminal
Résumé des méthodes de mise à jour de plusieurs colonnes [Ruby on Rails]
[Ruby on Rails] Comment changer le nom de la colonne
[Rails] Je ne sais pas comment utiliser le modèle ...
[Rails] Comment utiliser la validation
Comment exécuter React et Rails sur le même serveur
Comment spécifier la validation pour time_field
Comment utiliser Ruby on Rails
[Rails] Un moyen simple de vérifier les colonnes
[Rails / Heroku / MySQL] Comment réinitialiser la base de données de l'application Rails sur Heroku
[Rails] Comment changer le titre de la page du navigateur pour chaque page
Comment vérifier le contenu de la chaîne de caractères java de longueur fixe
[Ruby on Rails] Comment éviter de créer des routes inutiles pour concevoir
Vérifiez la racine sur le navigateur Rails
[Ruby on Rails] Lors de la première connexion ・ Comment diviser l'écran en deux à l'aide de jQuery
Les débutants de Gorigori ont résumé comment utiliser la base de données à l'aide de la console rails Ntiunus
Comment résoudre la construction de l'environnement local de Ruby on Rails (MAC)!
Comment vérifier Java installé sur Mac
[Rails] Comment utiliser la méthode de la carte
Préparer l'environnement de contrôle de sécurité pour Rails 6
[Ruby on Rails] Comment utiliser redirect_to
[Ruby on Rails] Comment faire de la destination du lien une partie de l'ID spécifié
Comment résoudre les erreurs qui se produisent lors du test d'intégration "Ruby on Rails"
[Ruby on Rails] Comment japonaisiser le message d'erreur de l'objet Form (ActiveModel)
[Rails] Comment décider de la destination par "voies ferrées"
Paramètres de validation pour la fonction de connexion Ruby on Rails
Comment vérifier le journal dans le conteneur Docker
[Rails] Comment implémenter un test unitaire d'un modèle
[Pour les débutants] Comment implémenter la fonction de suppression
Comment installer plusieurs JDK sur Ubuntu 18.04 LTS
[Rails MySQL] Comment réinitialiser la base de données sur heroku
[Java] Mémo sur la façon d'écrire la source
[Java] Comment rendre plusieurs boucles for uniques
Comment changer le processus en fonction de la liste appuyée lorsqu'il y a plusieurs ListViews
Comment vérifier l'application WEB créée dans l'environnement de développement PC sur votre smartphone
[Rails] Obtenons dynamiquement le seuil de validation du modèle "contrôle de longueur" à partir des informations de table
[Ruby on Rails] Comment implémenter la fonction de balisage / recherche incrémentielle pour les articles (sans gemme)
Je veux accéder à l'API avec Rails sur plusieurs docker-composes configurés localement