0 votes

Relations complexes en Ruby - afficher des données dans plusieurs tableaux

J'ai conçu une application composée de plus de 20 tableaux, et utilisant Ruby on Rails. J'utilise un système d'authentification pour que les utilisateurs puissent se connecter. Je veux afficher à l'utilisateur, lorsqu'il se connecte, les informations le concernant qui peuvent être trouvées dans de nombreuses tables, entre ces tables il y a toutes les relations possibles. Comment puis-je réaliser cela dans RoR ? Dois-je envisager d'utiliser des vues, des jointures multiples ? Je n'ai pas réussi à obtenir des informations d'un modèle au-delà de 2 tables en regardant dans la conception des tables en utilisant des approches classiques comme "has many", ":through" etc.

Pouvez-vous partager vos connaissances ?

Merci !

0voto

Petros Points 4430

Je suppose que votre modèle utilisateur a des relations avec toutes les tables qui contiennent des informations connexes.

En supposant que, vous pouvez avoir une action dans UsersController et une vue correspondante. Dans l'action, vous pouvez découvrir qui est l'utilisateur actuellement connecté, puis obtenir toutes les données dont vous avez besoin à partir des modèles associés. Renvoyez ces données à la vue et rendez-les comme vous le souhaitez.

0voto

Tony Points 6793

Je pense que votre question est trop générale, mais voici quelques réflexions... en supposant que vous créez une application Rails conventionnelle

"Devrais-je envisager d'utiliser des vues ?"

Les vues sont ce que les utilisateurs voient dans les applications rails classiques. Ainsi, si vous voulez afficher des données à vos utilisateurs, utilisez les vues pour afficher les données qui sont disponibles dans les contrôleurs. Chaque action dans le contrôleur saisira les données des modèles, et aura une vue correspondante.

Ainsi, pour afficher les livres qui appartiennent à un utilisateur, vous pouvez disposer d'un contrôleur Books. Après qu'un utilisateur se soit connecté, vous avez une action "index" dans le contrôleur "Books" qui dit @user_books = @user.books. Dans ce cas, @user serait l'objet utilisateur de votre système d'authentification. Un utilisateur peut avoir plusieurs livres, et il est possible qu'un livre ait plusieurs utilisateurs. Ensuite, dans votre fichier views/books/index.html.erb vous avez quelque chose comme :

<ul>
<% @user_books.each do |b| %>
  <li> <%= b.name %> </li>
<% end %>
</ul>

pour imprimer une liste de noms de livres.

Les jointures sont réalisées automatiquement par Rails, vous n'avez donc pas à vous en préoccuper pour l'instant. Mais si votre application devient vraiment grosse et que les requêtes sont compliquées, vous devrez peut-être réécrire les instructions SQL pour améliorer l'évolutivité....mais c'est évidemment un bon problème à avoir.

J'espère que cela vous aidera !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X