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.
Assoziation von Benutzermodell und Teammodell. Mit den folgenden Einschränkungen.
↓ Dies ist der Verein.
Rails 6.0.3 Ruby 2.7.1 mysql2 0.5.3
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.
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.
Ich hoffe es hilft jemandem.
Recommended Posts