[Résolu][Rails] Utilisation de classe personnalisée pour la composition - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : [Résolu][Rails] Utilisation de classe personnalisée pour la composition (/showthread.php?tid=5714) Pages :
1
2
|
[Résolu][Rails] Utilisation de classe personnalisée pour la composition - Maz - 28-09-2011 Bonsoir, aussitôt dis, aussitôt fait. J'aimerais juste savoir ou doit-on placer ses class personnalisé? J'ai créé une class Point:
Que j'essaie d'utiliser dans ma class Character:
Mais toujours impossible d'accéder aux propriétés x et y de l'objet Character. Dur de trouver des exemples sur le net de composition différent de celui de la doc, et aucune explications sur ou placer ses fichiers... Merci d'avance. Edit: oups, oublié l'erreur: You have a nil object when you didn't expect it! You might have expected an instance of Array. The error occurred while evaluating nil.split Edit²: Ahh, trouvé l'erreur! j'ai utilisé [1..-2] à la place de [1,-2], ça fonctionnes à merveille, désolé pour le dérangement, si j'avais pu, j'aurais delete le post! RE: [Rails]Utilisation de class pessonalisé. Composition. - Sephi-Chan - 28-09-2011 J'ai la sensation que tu ne fais pas beaucoup d'effort pour comprendre le mécanisme. Tu devrais lire la documentation du module ActiveRecord::Aggregations::ClassMethods plus attentivement. Pour te mettre un peu sur la voie :
RE: [Rails] Utilisation de class pessonalisé. Composition. - Sephi-Chan - 28-09-2011 Tu peux mettre ta classe dans un fichier placé parmi tes modèles. À ta place, j'aurais plutôt utilisé 2 colonnes de type entiers : X et Y. Voilà ce qu'aurait donné mon code :
RE: [Rails] Utilisation de class pessonalisé. Composition. - Maz - 28-09-2011 Mais je ne peut faire ainsi! Etant donné que tout ce qui m'est retourné de la bdd est en String! c'est justement séparé x et y que je cherches à faire! Sinon je n'utiliserais pas de composition iffle: Quoi qu'il en soit. J'ai fait quelque test et ça bloque au niveau des assignations:
Me renvoi l'erreur: undefined method `point' for #<Point:0xb48992c @x=7, @y=2>(La fonction where_to_live! permet de définir la position de la cité sur la carte à sa création d'après mon fameux (pas tant que ça ,P) script de spirale carré. La fonction renvoi un objet de type Point. La fonction fonctionnes(wow), puisque comme on peut le voir dans le message d'erreur, les variables sont bien rempli par le retour de cette fonction). Edit: Après réflection je me suis dis que j'aurais peut-être besoin un jour d'instancier un objet Point avec x et y (par exemple lorsque c'est moi qui définirais les coordonnées). J'ai donc amélioré mon petit bout de code, voici ma class actuellement fonctionnelle:
Edit²: Ok, erreur résolu:
Pas pigé mais fonctionnel.. o.0 Si quelqu'un comprends le pourquoi du comment...Maintenant erreur à l'affichage dans les vues: can't convert Symbol into Integer ça approches... en espérant que ce soit la dernière --' Edit³: Ok, j'ai trouvé le problème, si je fait:
ça fonctionnes dans la vue, probablement PgSQL qui appelles cette méthode avec la valeur du champs position. Demain je ferais un mix des deux méthodes, et je penses que ce seras bon.Merci. RE: [Rails] Utilisation de class pessonalisé. Composition. - Sephi-Chan - 29-09-2011 (28-09-2011, 10:49 PM)Maz a écrit : Mais je ne peut faire ainsi! Etant donné que tout ce qui m'est retourné de la bdd est en String! c'est justement séparé x et y que je cherches à faire! Sinon je n'utiliserais pas de composition iffle: Explique-moi pourquoi tu tiens tant à garder ce champ de type Point dans ta base de données puisque tu ne l'utilises plus comme tel. Changer ton schéma pour utiliser 2 entiers qu'une chaîne, est-ce si difficile ? L'utilisation de la composition, c'est juste pour te permettre de manipuler un objet (qui a donc ses propres méthodes) plutôt que plusieurs attributs. Ainsi, tu pourrais faire des choses comme :
Et ainsi, tu extrais de ta classe Character la logique géographique. RE: [Rails] Utilisation de class pessonalisé. Composition. - Maz - 29-09-2011 Je tiens à garder le champs en type point pour pouvoir l'utiliser dans les fonctions spatiales et les opérateur de comparaisons proposées par PostgreSQL. Tu serais d'avis de recoder toutes les fonctions qui pourraient m'être utiles? Certains opérateurs assez complexe me seront probablement utiles, du genre circle '((0,0),2)' @> point '(1,1)' qui retourne un booléen pour savoir si le point est dans le cercle... RE: [Rails] Utilisation de class pessonalisé. Composition. - Sephi-Chan - 29-09-2011 Ces fonctions ont l'air d'opérer sur des chaînes de caractères, tu peux donc ajouter à ton objet Point des méthodes qui délégueront l'opération au serveur PostgreSQL. À toi de voir. RE: [Rails] Utilisation de class pessonalisé. Composition. - Maz - 29-09-2011 (29-09-2011, 06:49 PM)Sephi-Chan a écrit : Ces fonctions ont l'air d'opérer sur des chaînes de caractères, tu peux donc ajouter à ton objet Point des méthodes qui délégueront l'opération au serveur PostgreSQL. Je penses que c'est "coder pour rien". Après je me trompes peut-être, je rencontrerais peut-être des problèmes lorsque je voudrais utiliser ces fonctions et changerais peut-être d'avis, mais en attendant avec les éléments que j'ai je reste sur ma position. J'ai terminé de codé ma class 100% fonctionnelle. Je la posterais dans les ressources lorsque je serais sur de sa fiabilité. RE: [Rails] Utilisation de class pessonalisé. Composition. - Sephi-Chan - 29-09-2011 Comment comptes-tu intégrer ces opérations au sein de ton code (c'est un exemple de code que j'attends) ? RE: [Rails] Utilisation de class pessonalisé. Composition. - Maz - 29-09-2011 (29-09-2011, 07:39 PM)Sephi-Chan a écrit : Comment comptes-tu intégrer ces opérations au sein de ton code (c'est un exemple de code que j'attends) ?Comme tu me l'as appris quelquepart:
*A peur de se faire taper sur les doigts* |