belongs_to :sender, :class_name => 'User'

Pour ma part, je préfère appeler ma clef étrangère "sender_id" que
"user_id" parce que cela précise le role de l'utilisateur.
user n'a pas vraiment de sémantique dans le contexte d'un message. sender
en a beaucoup plus =).

Pour ce qui est des récipients, en déclarant un has_many :users, :through
=> :recipients dans le modèle message, tu peux dès lors passer les
récipients via des input hidden avec comme name "user_ids[]" dans ta vue
(facebook style). Y'a d'autres solutions mais celle ci a le mérite d'etre
clean et facilement maintenable.

Le fait d'avoir un modèle séparé te permet effectivement de gérer le
read/unread par destinataire, mais aussi de gérer la suppression:

Quand deleted est à true dans la table recipient, on n'affiche plus le
message pour l'utilisateur concerné.
Quand tous les destinataires ET l'émetteur ont supprimé le message (on gère
sender_deleted dans la table message), on peut supprimer physiquement le
message et toutes ses associations pour libérer un peu d'espace. Tu n'es
pas obligé de faire ca si ton appli est destinée à un nombre restreint
d'utilisateurs.

Le 22 février 2012 18:24, Nikog <[email protected]> a écrit :

>
>
> Le 22 février 2012 17:25, Guillaume Betous <[email protected]> a
> écrit :
>
> De plus cet intermédiaire (table recipients) te permet de rajouter des
>> "gadgets" qui sont souvent demandé vers la fin du projet, quand tout marche
>> (histoire de tout casser si on n'a pas prévu), comme l'info "read/unread".
>>
>> gUI
>>
>
> oui je pense que je vais partir la dessus. Merci
>
>>
>> Le 22 février 2012 21:53, thierry henrio <[email protected]> a
>> écrit :
>>
>> 2012/2/22 Nikog <[email protected]>
>>>
>>>> Merci de vos réponses,, la gastro est passée par là alors 24 h00 de
>>>> black out :-(.
>>>>
>>>> J'ai compris le truc mais pourquoi faudrait-il un modèle Sender ?
>>>> Je pensais juste utiliser User et Message et mettre en effet le
>>>> sender_id dans le modèle Message en y assignant l'id du user expediteur. Je
>>>> dis des bétises ?
>>>
>>>
>>> User has_many :messages et Message belongs_to :user permet de chercher
>>> les messages que j'ai envoyé (regarde
>>> http://guides.rubyonrails.org/association_basics.html#the-belongs_to-associationpour
>>>  changer le nom du champs (sender_id))
>>>
>>> Et un message n'a pas encore de destinataires ...
>>>
>>> Oui bien sur, c'est la relation de base, mais comme je peux envoyer un
> message à moi même et à une ou plusieurs personnes cela ne va pas suffire.
>
> Merci
>
> 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]

Répondre à