[RUBY] [Rails / Eindeutigkeitsbeschränkung] Überprüfen der Modellvalidierung auf der Konsole / Eindeutigkeitsbeschränkung für mehrere Spalten

Status


Diese Validierung kann durch Verwendung der "Eindeutigkeitsbeschränkung" erreicht werden.

Diesmal handelt es sich um eine Aufzeichnung des Vorgangs auf der Konsole, der von Schienen c gestartet wird, um festzustellen, ob dies ordnungsgemäß implementiert ist.


Umgebung


Dieser Code

app/models/permission.rb



class Permission < ApplicationRecord
  belongs_to :user
  belongs_to :task

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

Dies ist übrigens eine Einschränkung der Anwendung, und um genau zu sein, muss auch eine Einschränkung auf der DB-Seite angewendet werden (<a href-"https://railsguides.jp/active_record_validations.html#uniqueness:title"> Rails Guide <) Von / a>). Ich verstehe es jedoch noch nicht und werde es diesmal weglassen.



Auf der Konsole eingegebene Befehle

Ich wollte die Eindeutigkeitsbeschränkung überprüfen, also habe ich den Code gemäß dem folgenden Ablauf ausgeführt.


Ich habe die Konsole im Terminal gestartet und bestätigt.

teminal


$ rails c

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

[2] > new.valid?
=> true

Es ist wahr geworden ... Ich dachte über die Ursache nach und änderte den Befehl.


Ursache und Befehl ändern sich

[Ursache] ▶ "find" ist eine ActiveRecord-Methode, die nach vorhandenen Datensätzen sucht ▶ Wenn Sie dies speichern, sieht es dann wie ein überschriebenes Speichern aus?

【Veränderung】 ▶ Geben Sie direkt user_id und task_id ein


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"

Ich konnte bestätigen, dass es völlig falsch war.


Zusammenfassung


Ich war ein bisschen süchtig danach, aber ich habe es geschafft, darüber hinwegzukommen. Um wirklich zu verstehen, scheint es notwendig zu sein, zu wissen, was hinter save and valid steckt.


Ich habe noch viel zu lernen, aber ich werde es eins nach dem anderen unterdrücken.


Referenzartikel


Recommended Posts

[Rails / Eindeutigkeitsbeschränkung] Überprüfen der Modellvalidierung auf der Konsole / Eindeutigkeitsbeschränkung für mehrere Spalten
So debuggen Sie die Verarbeitung im Ruby on Rails-Modell nur mit der Konsole
So überprüfen Sie Rails-Befehle im Terminal
Zusammenfassung der Methoden zum Aktualisieren mehrerer Spalten [Ruby on Rails]
[Ruby on Rails] So ändern Sie den Spaltennamen
[Rails] Ich weiß nicht, wie ich das Modell verwenden soll ...
[Rails] Verwendung der Validierung
So führen Sie React und Rails auf demselben Server aus
So legen Sie die Validierung für time_field fest
Verwendung von Ruby on Rails
[Schienen] Einfache Möglichkeit, Spalten zu überprüfen
[Rails / Heroku / MySQL] So setzen Sie die Datenbank der Rails-App auf Heroku zurück
[Schienen] So ändern Sie den Seitentitel des Browsers für jede Seite
So überprüfen Sie den Inhalt der Java-Zeichenfolge mit fester Länge
[Ruby on Rails] So vermeiden Sie das Erstellen unnötiger Routen für die Entwicklung
Überprüfen Sie das Stammverzeichnis im Rails-Browser
[Ruby on Rails] Beim ersten Anmelden ・ So teilen Sie den Bildschirm mit jQuery in zwei Hälften
Gorigori-Anfänger fassten zusammen, wie die Datenbank mit der Rails-Konsole Ntiunus betrieben wird
So lösen Sie die lokale Umgebungskonstruktion von Ruby on Rails (MAC)!
So überprüfen Sie, ob Java auf einem Mac installiert ist
[Schienen] Verwendung der Kartenmethode
Bereiten Sie die Sicherheitsüberprüfungsumgebung für Rails 6 vor
[Ruby on Rails] Verwendung von redirect_to
[Ruby on Rails] So machen Sie das Linkziel zu einem Teil der angegebenen ID
So beheben Sie Fehler, die beim Integrationstest "Ruby on Rails" auftreten
[Ruby on Rails] So japanisieren Sie die Fehlermeldung des Formularobjekts (ActiveModel)
[Rails] So bestimmen Sie das Ziel anhand von "Rails-Routen"
Validierungseinstellungen für die Ruby on Rails-Anmeldefunktion
So überprüfen Sie das Protokoll im Docker-Container
[Rails] So implementieren Sie einen Unit-Test eines Modells
[Für Anfänger] So implementieren Sie die Löschfunktion
So installieren Sie mehrere JDKs unter Ubuntu 18.04 LTS
[Rails MySQL] So setzen Sie die Datenbank auf Heroku zurück
[Java] Memo zum Schreiben der Quelle
[Java] Wie man mehrere for-Schleifen einzeln macht
So ändern Sie den Prozess in Abhängigkeit von der Liste, die gedrückt wird, wenn mehrere ListViews vorhanden sind
So überprüfen Sie die in der PC-Entwicklungsumgebung auf Ihrem Smartphone erstellte WEB-Anwendung
[Rails] Lassen Sie uns den Schwellenwert für die "Längenprüfung" der Modellvalidierung dynamisch aus Tabelleninformationen abrufen
[Ruby on Rails] So implementieren Sie die Tagging- / inkrementelle Suchfunktion für Posts (ohne Gem)
Ich möchte die API mit Rails auf mehreren lokal eingerichteten Docker-Composes treffen