Je ne sais pas si je suis le seul, mais en toute franchise je ne suis pas
sûr d'avoir bien compris ce que tu cherches à faire.

Bon, au cas où j'aurais compris, tu as des

   - devices, qui ont des ports
   - ports qui sont sur des devices, qui ont des connexion
   - connexions qui sont sur deux ports différents chaque

Et si je comprends bien tu as modélisé ça comme ça :

   - [device, port] <=> connexion <=> [port, device]

Hmm. Ca m'a l'air compliqué. C'est moi où je sens l'odeur caractéristique du
pattern-spaghetti brûlé ?

Attends, pourtant il semblerait qu'il y a un pattern plus simple...

   - device => port => connexion <= port <= device

Ben oui, un device a des ports, chaque port peut avoir une connexion, et une
connexion relie deux ports (qui de toute façon appartiennent chacun à un
device).

Bon, en AR::B ça donne quoi ?

class Device < AR::B
hm :ports
end

class Port < AR::B
bt :device
ho :connexion
end

class Connexion < AR::B
bt :port_src
bt :port_dst
end

En admettant que tu aies vraiment besoin d'un objet Connexion, ça me semble
une solution possible. Mais laisse-moi t'en proposer une autre, dans le cas
où l'objet Connexion ne serait utile qu'à faire le lien entre deux ports :

class Device < AR::B
hm :ports
end

class Port < AR::B
bt :device
ho :port
end

Plus simple, plus élégant (après tout, un port ne peut être relié qu'à une
seule connexion si on est dans le cas d'une liaison type réseau
informatique), plus maintenable (un modèle superflu de moins), et même si le
modèle Connexion contanait des informations il est probable qu'elles aient
été en doublon avec celles de "Port" par exemple (ex : vitesse de la
connexion, qui peut se déduire de la vitesse des deux ports).

Bon, c'est en admettant que j'ai compris le problème...

Michel Belleville

--~--~---------~--~----~------------~-------~--~----~
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 à