Merci avec donc une relation : User Model has_many :messages, :through => :recipient
Message Model has_many :users, :through => :recipient On est d'accord ? Cela ressemble à une bonne option en effet. De loin le problème me semblait trivial mais une fois penché dessus j'ai commencé à me torturer les méninges (ce qui fait du bien dans un sens). Je vais essayer cela. Cordialement. Le 20 février 2012 15:58, Florian Dutey <[email protected]> a écrit : > Un modèle "recipient" avec > > - sender_id (user) > - receiver_id (user) > - message_id (message) > - read (boolean) > - deleted (boolean) > > me semble être la meilleure solution. > Ce modèle te permet d'adjoindre de nombreux comportements: > > * suppression par utilisateur tout en gardant la liste de tous les > destinataires > * gestion read/unread par utilisateur > * un message est détruit quand tous les receivers et le sender l'ont > marqué comme détruit > > J'avais eu la même problématique que toi et j'avais envisagé toutes les > solutions. J'avais retenu celle-ci. > > Le 20 février 2012 15:23, Nikog <[email protected]> a écrit : > >> Bonjour >> >> j'ai un problème de conception sur une nouvelle application avec >> >> des Users qui peuvent envoyer des messages à plusieurs autres Users ainsi >> qu'à eux-mêmes. >> Et je veux pouvoir récupérer tous les messages envoyés par un user et >> tous ceux adressé à un user >> J'ai donc deux modèles >> >> User >> Message >> >> quelle est la relation que vous me conseillez entre les deux ? >> >> J'avais pensé faire comme des tags avec des cases à cocher avec une >> relation de type has_many through et un modèle intermédiaire mais j'ai peur >> que cela ne coince quelque part ... >> >> Merci de votre aide >> >> >> Nikog >> >> >> -- >> Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" >> de Google Groups. >> Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse >> [email protected] >> Pour résilier votre abonnement envoyez un e-mail à l'adresse >> [email protected] > > > -- > Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de > Google Groups. > Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse > [email protected] > Pour résilier votre abonnement envoyez un e-mail à l'adresse > [email protected] -- Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de Google Groups. Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse [email protected] Pour résilier votre abonnement envoyez un e-mail à l'adresse [email protected]
