[RUBY] Überprüfen Sie, ob has_many vorhanden ist und zu optional gehört: Was ist wahr?

Motivation

Ich denke, dass es in vielen Fällen notwendig ist, die Existenz verwandter Ziele auf der Seite "Gehört zu" zu überprüfen, aber ich bin selten darauf gestoßen, die Existenz verwandter Ziele auf der Seite "has_many" zu überprüfen, also habe ich sie überprüft.

Was du machen willst

Assoziation von Benutzermodell und Teammodell. Mit den folgenden Einschränkungen.

↓ Dies ist der Verein. スクリーンショット 2020-09-04 19.28.21.png

Umgebung

Rails 6.0.3 Ruby 2.7.1 mysql2 0.5.3

Post Model Association

class Team < ApplicationRecord
    belongs_to :user
end

Dies ist alles, was Sie für das Postmodell benötigen. Wenn Sie Gehör zu schreiben, wird standardmäßig optional: false angewendet. Dies legt die Einschränkung fest "Beitrag muss immer dem Benutzer zugeordnet sein".

Im Gegenteil, wenn Sie einen "Beitrag erstellen möchten, der nicht an einen Benutzer gebunden ist",

class Team < ApplicationRecord
    belongs_to :user, optional: true
end

Es ist in Ordnung, wenn Sie es so schreiben. optional: true muss nicht unbedingt dem Benutzer zugeordnet sein.

Benutzermodellzuordnung

class User < ApplicationRecord
    has_many :teams
    validates :teams, presence: true
end

Wenn Sie auf der Seite "has_many" die Existenz verwandter Ziele überprüfen möchten, müssen Sie eine Validierung hinzufügen. Wenn Sie sich wie oben bewerben, sind Sie auf "Sie müssen mindestens ein Team haben" beschränkt.

Schließlich

Ich hoffe es hilft jemandem.

Recommended Posts

Überprüfen Sie, ob has_many vorhanden ist und zu optional gehört: Was ist wahr?
Was sind Microservices und Microservices Frameworks?
[Ruby-Verständnisprüfung] Können Sie erklären, was passiert? && und und
'% 02d' Was ist der% von% 2?
Was für ein StringUtil ist gut?
Was ist es? ~ 3 Arten von "Nein" ~
Was für eine Methode ist define_method?
Was ist ein Test? ・ Über die Wichtigkeit eines Tests
Was ist Java und Entwicklungsumgebung (MAC)
Wie ist die Datenstruktur von ActionText?
Was ist die Überprüfung der RSA-Signatur und warum?
Was ist JSP? ~ Lassen Sie uns die Grundlagen von JSP kennen !! ~
Überprüfen Sie die installierte und aktivierte JDK-Version
Was ist der Unterschied zwischen SimpleDateFormat und DateTimeFormatter? ??
Was sind die Vorteile von DI und Thymeleaf?