J'ai une application Ruby on Rails dans laquelle le code accède directement directement aux tables de jointure many-to-many. Cela rend très difficile la modification d'une partie du code car elle contourne les associations et méthodes normales créées via les relations: has_many et: has_many: through.Une bonne raison d'accéder directement à la table de jointure many-to-many?
Ma question est simplement, est-ce une chose acceptable à faire ou devrait-elle être évitée?
Dans mon esprit, du point de vue de la base de données, les tables de jointure n'existent pas dans la vue logique. En tant que tel, il ne devrait y avoir aucune raison d'y avoir accès directement. Il faut simplement ignorer qu'ils existent et laisser le framework s'occuper d'eux.
Que pensent les autres?
Pour être plus précis, je me demande si ce qui suit devrait jamais apparaître dans le code:
Person { name }
Group { name }
PersonGroup { person_id, group_id, membership_state }
PersonGroup.find(:all, :conditions => {:membership_state => 'pending'} }
Je pense qu'au lieu d'utiliser la table de jointure, on devrait plutôt la portée de la demande au Groupe et trouver tous les membres en attente de cette façon.
J'étais un peu confus dans ma question. Je fais référence à l'utilisation d'un modèle activerecord pour représenter la table de jointure, certainement pas accéder directement à la table. –
Cela a beaucoup de sens car le PersonGroup n'agit pas seulement comme une table de jointure, mais comme un objet avec un état, dans ce cas l'attribut membership_state. Il est logique d'être son propre objet et pas seulement une portée nommée. –