IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ruby Discussion :

Single Table Inheritance


Sujet :

Ruby

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : mars 2018
    Messages : 20
    Points : 13
    Points
    13
    Par défaut Single Table Inheritance
    Bonjour,

    Voilà quelques mois que je me suis lancé dans la programmation RoR et voudrais lancer (pour apprendre) un premier site web autour de circuits de randonnées.

    Dans ce cadre, je me suis intéressé aux STI pour alimenter ma base de données, mais je me pose pas mal de questions. Peut être que vous pourrez m'aider.

    Mes données sont composées de POI (Point of Interêt) qui peuvent se décliner en plusieurs types (hébergement, restauration, services...etc). Chacun de ces types, ont en communs plusieurs champs :
    - name
    - address
    - city
    - long
    - lat
    - pk
    ... etc

    Mais aussi des spécificités propres à chaque type. Les données affichées entre un hébergement, un service, ou autre ne sont parfois totalement différentes. D'où l'idée d'utiliser les STI... mais est ce une bonne idée.

    D'après ce que j'ai compris, je vais avoir une première table POI regroupant les informations de base. Je crée un modèle pour chaque type qui héritent du modèle de base POI. C'est là où c'est un peu confu.
    Est ce qu'il va y avoir une table pour chaque type avec une liaison avec la table POI, ou bien est ce que chaque type a sa propre table, le modèle POI ne servant qu'à faciliter le codage ?

    Autre question, j'utilise simple_form, est ce que je pourrai alimenter ma base facilement car j'ai lu deci delà, que ça pouvait poser un problème ?

    Merci d'avance pour vos retours, j'aurai probablement d'autres questions à suivre

  2. #2
    Membre actif
    Profil pro
    Problem Solver
    Inscrit en
    juin 2013
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Problem Solver

    Informations forums :
    Inscription : juin 2013
    Messages : 136
    Points : 234
    Points
    234
    Par défaut
    Je pense que l'intérêt est aussi de tagguer tout ça (tags lieu d'intérêt, tag service, tag hôtellerie... c'est un gem mais c'est facile "à la main" aussi),
    et de relier tout ça à la fois autour d'un point [1], de thèmes [2] et en balades [3] ou autres approches encore [4]

    [1] les refuges du Mont Blanc sont intéressants parce qu'il y a le Mont Blanc (sinon on n'irait pas) et à l'inverse il est intéressant quand on veut aller au Mont Blanc d'en trouver les refuges.
    [2] églises du XIIIe siècle, art brutal, ponts suspendus...
    [3] Paris-Chartres ou "Compostelle"
    [4] tes utilisateurs pourraient vouloir les ranger ensemble, par exemple d'intérêt général "contourner telle ville à travers champs" ou "les moulins de telle région", ou privé "mes vacances 2018".

    Bref pour moi le principe n'est pas tant d'avoir des STI pour des POI, c'est un peu intéressant mais pas tant que ça.
    Tu voudras surtout enrichir tes POI (photos), lister des POI (lieux visités ou désirés), et les relier.

    Pour moi la question est alors surtout dans les tables de jointures entre les POI. Pas juste une jointure "poi1_id, poi2_id" mais bien "poi1, poi2, type de relation, définie quand et par qui". Tu pourras alors utiliser les has many through et faire des requêtes "malines" sur ta donnée qualifiée.

    Pour moi, c'est un peu de code, mais surtout beaucoup de données à qualifier manuellement... alors bon courage

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : mars 2018
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Merci pour cet avis argumenté. Si sur le fond tu as raison, pour moi c'est avant tout du code puisque je suis en phase d'apprentissage. J'ai continué mon exploration et suis arrivé à la conclusion qu'il fallait que je m'oriente sur des MTI.
    Les données génériques du POI étant dans le modèle de base, je pourrais toujours l'enrichir avec autant de nouveaux modèles que je souhaite. Apparement même, pour pouvoir faire ce que tu préconises, l'idéal serait de passer sur Postgis... mais là c'est une autre paire de manches.

Discussions similaires

  1. [2.x] Inheritance Single Table - methode Find
    Par G4nSta dans le forum Symfony
    Réponses: 1
    Dernier message: 18/10/2013, 11h15
  2. Routes et Single-table inheritance
    Par Javix dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 07/04/2009, 14h22
  3. Héritage (single-table inheritance)
    Par Javix dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 27/01/2009, 13h04
  4. Utilisation d'une Single Table Inheritance et des migrations
    Par redpopo dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 08/12/2008, 16h55
  5. [Single Table Inheritance] Documentation
    Par seb_asm dans le forum Design Patterns
    Réponses: 2
    Dernier message: 10/03/2005, 13h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo