JeuWeb - Crée ton jeu par navigateur

Version complète : [Rails] Association avec deux même modèles d'une même classe
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Pages : 1 2
Salut! J'ai besoin de faire une association entre deux entités d'un même modèle, comme pour une messagerie interne (expéditeur et receveur sont tout deux "utilisateur"), dans la base de données ça donnerais quelque chose comme:
id
expediteur
receveur

J'ai juste besoin de ces trois champs, mais comment faire avec les association d'ActiveRecord de rails? J'ai suivi le guide qui parles du sujet, je dois donc utiliser des self join.

Mais dois-je créer la migration moi-même? J'ai essayer:

rails g model mapCitiesDiscovery user:references user:references

Comme je m'y attendais, j'ai eu droit à une belle erreur =D.

Une idée?
J'ai un très bon exemple de ça dans Conquest on Rails : un territoire (Territory) disposes de territoires voisins, la relation de voisinage (Neighbourhood) est donc associés à deux territoires.

Voici les fichiers concernés :

https://github.com/Sephi-Chan/Conquest-o...rritory.rb
https://github.com/Sephi-Chan/Conquest-o...ourhood.rb


Ps : Explique-moi le nom de ton modèle, s'il te plaît. Smile
(24-10-2011, 10:41 PM)Sephi-Chan a écrit : [ -> ]J'ai un très bon exemple de ça dans Conquest on Rails : un territoire (Territory) disposes de territoires voisins, la relation de voisinage (Neighbourhood) est donc associés à deux territoires.

Voici les fichiers concernés :

https://github.com/Sephi-Chan/Conquest-o...rritory.rb
https://github.com/Sephi-Chan/Conquest-o...ourhood.rb


Ps : Explique-moi le nom de ton modèle, s'il te plaît. Smile

En fait j'ai une carte, avec tout un système de "découverte", de base toutes les cités ennemies sont invisible(un peu à la warcraft et autres STR). J'aimerais donc créé une table ou seront enregistré chaque découverte des cités par un joueur(je penses qu'elle risques un jour d'être assez conséquente, mais je tiens à cette fonctionnalité).

C'est donc deux objet de classe "City" que je voudrais lié.
Ne préfixe pas le nom de tes modèles, ça ne sert à rien et ça nuit à la lisibilité.
Je te conseille de nommer ce modèle CityDiscovery puisqu'elle modélise la découverte d'une cité (par une autre, mais ça importe).

Du coup tu devrais pouvoir adapter mon exemple facilement, même si je pense que tu vas encore tomber dans le piège du mauvais nommage.
(24-10-2011, 10:55 PM)Sephi-Chan a écrit : [ -> ]même si je pense que tu vas encore tomber dans le piège du mauvais nommage.
Tu peux en être sur ,) merci en tous cas.
Pense à montrer ce que tu as fait quand ça marchera. :p
(24-10-2011, 11:02 PM)Sephi-Chan a écrit : [ -> ]Pense à montrer ce que tu as fait quand ça marchera. :p

Une question (un peu hors sujet), je regardais le fichier de ta migration, et je vois que tu utilises de simples integer à la place des références? Une raison à cela?
Ça n'a aucune incidence sur le résultat final. Les deux notations suivantes sont strictement équivalentes.


t.integer :other_territory_id
t.references :other_territory
Je sais qu'elles sont équivalentes mais je préfère 100x la première, je la trouve bien plus parlante
Moi je préfères la seconde, plus parlante je trouves aussi ,P d'autant que lorsque l'on utilise le generateur de rails, post:references génères un champs post_id et un index post_id(optimisation des requêtes?)
Pages : 1 2