0

utilisateurs => has_many: contacts,: à travers =>: user_contacts contacts => has_many: utilisateurs,: à travers =>: user_contactsrails modèles scénario association

profils

maintenant profils, il y a un seul profil pour chaque utilisateur, mais il existe deux façons d'y accéder, en fonction de l'URL. Il y a une URL publique et une URL privée. Un URL public appartient à un utilisateur mais l'URL privée appartient à un contact (c'est-à-dire attribué au contact en tant qu'URL privée du profil de l'utilisateur auquel appartient ce contact). Je suis confus comment traiter l'association de profils avec l'utilisateur et les contacts dans ce scénario.

dois-je utiliser STI pour les profils comme classe Profil < ActiveRecord :: Base, classe PublicProfile < Profil, classe PrivateProfile < Profil

mais si c'est valide, comment puis-je gérer les associations ici?

Répondre

0

Qu'en est-il simplement d'avoir un seul type d'URL et de se différencier avec un type dans la table. Ensuite, vous pouvez avoir les relations pour chaque type d'URL avec quelque chose le long des lignes de:

belongs_to :private_url, :class_name => "Profiles", :conditions => "type = 0" 
belongs_to :public_url, :class_name => "Profiles", :conditions => "type = 1" 

Cette manière significative « simplifier » votre assciations que vous avez à gérer. Ce n'est pas la réponse complète, je ne pense pas, mais peut-être que si vous pouvez le faire fonctionner cela simplifie suffisamment les choses pour que le problème que vous avez devient plus simple à résoudre.

Je peux avoir la syntaxe exacte ci-dessus incorrecte mais vous devriez obtenir l'essentiel de ce que je suggère ...