|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre confirmé
![]() Inscription : février 2005 Messages : 287 ![]() |
Bonjour à tous,
Après avoir pas mal touché de PHP, .net, etc. je débute depuis quelques semaines en Rails. J'ai lu pas mal de choses, fait de petits tests, et me suis lancé sur la rédaction d'une première appli de gestion de tâches (original Dans cette appli, j'ai les modèles suivants : Code :
Le cas des notebooks faisant référence à un unique "parent" était réglé d'un simple : Mais j'ai bloqué hier pour la création des tâches qui font référence à 2 modèles "parents" différents, User et Notebook. Et là, je sèche. J'ai vu les associations polymorphiques, mais il me semble que cela concerne les cas où une instance d'un modèle peut avoir 2 parents différents, mais pas au même moment (soit l'un, soit l'autre). Je creuserai quand même cette piste. Le problème est sans doute courant et simple pour des personnes plus aguerries que moi en Rails, c'est pour ça que je sollicite votre aide ! D'avance merci à ceux qui seront arrivés jusque là et pourront peut-être me fournir des pistes |
||
|
|
00
|
|
|
#2 | ||
|
Membre confirmé
![]() Inscription : février 2005 Messages : 287 ![]() |
Bon, je m'auto-réponds.
Pour l'instant j'ai résolu le problème en utilisant le code suivant : Code :
Merci |
||
|
|
00
|
|
|
#3 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2011 Messages : 8 ![]() |
Dans ton cas simple :
- Oublie la polymorphique. - Enleve la relation entre Task et User Code :
|
||
|
|
00
|
|
|
#4 |
|
Membre confirmé
![]() Inscription : février 2005 Messages : 287 ![]() |
Merci de ta réponse Ipoténuz ! Bien vu pour "task", j'avoue ne pas y avoir pensé ! En revanche, je te confirme que j'ai bel et bien "besoin" de la relation entre user et tasks, puisque j'ai donné la possibilité de créer des notebooks publics dans lesquels tous les utilisateurs peuvent ajouter des tâches.
Merci d'avoir pris un peu de temps pour réfléchir à ma question néanmoins |
|
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2011 Messages : 8 ![]() |
Rien ne t'empêche d'avoir plusieurs clefs. Par contre il faut gérer la cohérence.
(Ne pas avoir une tache belongs_to un utilisateur qui ne serait pas le même dans le notebook qui contient la tache en question...) Réaliser un gestionnaire de tâches est un super exercice, il y a plein de manières pour l'entreprendre. Il y a une vraie nécessité de définir exactement le cahier des charges dès le départ. Il y a des petites choses pas très claires : - As tu envisagé d'assigner une tâche à plusieurs users ? - Si tu utilises le current_user, ça veut donc dire que tu ne peut pas assigner une tâche à quelqu'un d'autre que soi-même ? - Une tâche ne doit elle pas être apparaitre dans plusieurs Notebook ? Ce n'est pas réalisable avec seulement 3 tables. |
|
|
00
|
|
|
#6 | ||
|
Membre confirmé
![]() Inscription : février 2005 Messages : 287 ![]() |
Citation:
Citation:
Pour être tout à fait clair, l'objectif n'était pas de coder un gestionnaire de tâches hyper complet, mais plutôt de faire quelque chose de simple, fonctionnel, qui tienne la route, et qui permette à mon collègue et moi de progresser sur Rails en étant confrontés à des problèmes réels. Et puis c'est l'occasion de tester l'utilisation de jQuery, de Sass, de différentes gemmes... donc un bon moyen de se faire la main Merci pour ton aide en tout cas, et je marque ce sujet comme résolu |
||
|
|
00
|
|
|
#7 | |||
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2011 Messages : 8 ![]() |
Le problème c'est la notion de notebook public.
Car dans ce cas, le notebook n'appartient à personne, et on se sait pas quoi lui mettre en user_id. Citation:
Code :
Tu passes par les taches pour récupérer les notebooks. Si vraiment besoin, tu peux créer un champ owner_id qui contient l'id du user à qui appartient le notebook, et si c'est "null" alors il est public., ce qui te permettra dans la vue d'afficher les notebooks concernés. Le schéma restera cohérent dans tous les cas. |
|||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com