[RUBY] Vérifiez l'existence de has_many et appartient_to-optional: Qu'est-ce qui est vrai?

Motivation

Je pense que vérifier l'existence de destinations liées du côté appartient_à est nécessaire dans de nombreux cas, mais j'ai rarement rencontré la vérification de l'existence de destinations associées du côté has_many, alors je l'ai vérifié.

Chose que tu veux faire

Association modèle utilisateur et modèle d'équipe. Cependant, avec les restrictions suivantes.

↓ C'est l'association. スクリーンショット 2020-09-04 19.28.21.png

environnement

Rails 6.0.3 Ruby 2.7.1 mysql2 0.5.3

association post-modèle

class Team < ApplicationRecord
    belongs_to :user
end

C'est tout ce dont vous avez besoin pour le modèle de poteau. Lorsque vous écrivez appartient_to, ʻoptional: false` est appliqué par défaut. Ceci impose la contrainte "la publication doit toujours être associée à l'utilisateur".

Au contraire, si vous souhaitez créer une "publication qui n'est pas liée à un utilisateur",

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

Ce n'est pas grave si vous l'écrivez comme ça. ʻOptional: true` ne doit pas nécessairement être associé à l'utilisateur.

association de modèle utilisateur

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

Du côté has_many, si vous souhaitez vérifier l'existence de destinations associées, vous devez ajouter une validation. Si vous postulez comme ci-dessus, vous serez limité à "vous devez avoir au moins une équipe".

finalement

J'espère que cela aide quelqu'un.

Recommended Posts

Vérifiez l'existence de has_many et appartient_to-optional: Qu'est-ce qui est vrai?
Qu'est-ce que les microservices et les frameworks de microservices
[Contrôle de compréhension Ruby] Pouvez-vous expliquer ce qui se passe? && et et
'% 02d' Quel est le% de% 2?
Quel genre de StringUtil est bon
Qu'Est-ce que c'est? ~ 3 types de "non" ~
Quel type de méthode est define_method?
Qu'est-ce qu'un test? ・ À propos de l'importance d'un test
Qu'est-ce que Java et l'environnement de développement (MAC)
Quelle est la structure des données d'ActionText?
Qu'est-ce que la vérification de signature RSA et pourquoi?
Qu'est-ce que JSP? ~ Connaissons les bases de JSP !! ~
Vérifiez la version de JDK installée et la version de JDK activée
Quelle est la différence entre SimpleDateFormat et DateTimeFormatter? ??
Quels sont les avantages de DI et de Thymeleaf?