Question

Je travaille sur une application Rails qui contiendra des informations sur un tas de gens. Il y a deux cas d'utilisation:

  1. Un administrateur entre et maintient le profil d'une personne
  2. La personne peut décider de vous inscrire, connectez-vous et maintenir leur propre profil

Je suis en train de travailler sur la relation entre le profil et l'utilisateur. En ce moment, il est que profile belongs_to :user et user has_one :profile.

Mais cette pause, parce que certains profils ont pas encore utilisateur - ils sont tenus par l'administrateur. Dans ce cas, la colonne de user_id dans profiles est nulle, la jointure échoue, et la page ne se charge pas. ++

Comment pourrais-je mettre en place un "peut-être belongs_to" genre de relation?

++ (En fait, il vient en blanc, sans erreur affichée et development.log n'a pas d'erreurs non plus, mais je peux voir que ce n'est pas terminé toutes les requêtes qu'il fait pour un profil qui n'a un utilisateur. Si quelqu'un sait comment je peux obtenir un message d'erreur utile à la place, ce serait aussi grand.)

Était-ce utile?

La solution

Ceci est la bonne façon de le faire. belongs_to ne l'empêche pas de valeurs null, et cela ressemble à ce que vous voulez.

La « page » pour un profil qui ne lui appartient pas encore à un utilisateur pourrait ne pas avoir autant de requêtes, parce qu'il n'y a pas besoin (ou moyen) pour interroger la table des utilisateurs pour ce profil.

Vous devriez vérifier profile.user pour nil et présenter votre point de vue en conséquence.

Autres conseils

Si un Profile appartient vraiment à un User, alors il ne devrait jamais être nul (tout comme il n'a pas de sens d'envisager une Engine sans Car il est attaché). Donc, vous devez supprimer l'association Profile.belongs_to :user.

Maintenant, vous devriez être en mesure de modifier librement Profiles et simplement les attacher à un User une fois qu'ils sont prêts. Mais vous avez un autre problème:

  

La personne peut décider de vous inscrire, connectez-vous et maintenir leur propre profil

Comment le système identifie de manière fiable quel profil pré-créé appartient à un utilisateur particulier qui ne dispose pas encore de profil? C'est un problème de conception, vous devez trier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top