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 on Rails Discussion :

Recherche multi-critères, jointure et pagination


Sujet :

Ruby on Rails

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2004
    Messages : 15
    Points : 15
    Points
    15
    Par défaut Recherche multi-critères, jointure et pagination
    Bonjour,

    Je débute avec RoR et je bute sur un pb depuis quelques temps maintenant. Voila ce que je cherche a faire :

    Table personnes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    +-----------+-------------+------+-----+---------+----------------+
    | Field | Type | Null | Key | Default | Extra |
    +-----------+-------------+------+-----+---------+----------------+
    | id | int(11) | NO | PRI | NULL | auto_increment |
    | genre | tinyint(1) | YES | | 1 | |
    | nom | varchar(25) | NO | | | |
    | prenom | varchar(25) | YES | | NULL | |
    | telephone | varchar(12) | YES | | NULL | |
    | fax | varchar(12) | YES | | NULL | |
    | mobile | varchar(12) | YES | | NULL | |
    | mail | varchar(50) | YES | | NULL | |
    +-----------+-------------+------+-----+---------+----------------+
    Table contact_fournisseurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    +----------------+-------------+------+-----+---------+----------------+
    | Field | Type | Null | Key | Default | Extra |
    +----------------+-------------+------+-----+---------+----------------+
    | id | int(11) | NO | PRI | NULL | auto_increment |
    | service | varchar(25) | YES | | NULL | |
    | personne_id | int(11) | NO | MUL | | |
    | fournisseur_id | int(11) | NO | MUL | | |
    +----------------+-------------+------+-----+---------+----------------+
    Classe Personne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class Personne < ActiveRecord::Base
      # Une personne est :
      # - soit un contact d'un fournisseur
      # - soit un contact d'un transporteur
      has_one :personnel_usine
      has_one :contact_fournisseur
      has_one :contact_transporteur
     
      # Il doit impérativement avoir un nom
      validates_presence_of :nom
    end
    Classe ContactFournisseur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class ContactFournisseur < ActiveRecord::Base
      # Un contact fournisseur est une personne
      belongs_to :personne
     
      # Un contact fournisseur est rattaché a un fournisseur
      belongs_to :fournisseur
    end
    Dans mon application, je n'ai pas accès directement a la table "personnes" car une personne est un contact soit d'un fournisseur, soit d'un transporteur (relation d'héritage). Je les créés, modifie, supprime donc a partir des contact fournisseur ou transporteur. Dans ma liste de contact fournisseur, je désire maintenant pouvoir faire une recherche multi-critères sur les données directements dans le contact mais aussi sur les données contenues dans la table personne (donc jointure) et paginer tout ça.
    Y a t-il une façon de faire avec RoR sans passer par 'find_by_sql' ?

    Merci par avance de vos solutions ou suggestions

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Comment as tu géré ton héritage ?

    La façon la plus commune avec rails c'est le Single Table Inheritance.
    Par exemple si Pomme < Fruit et Banane < Fruit, Dans ma db je n'aurais qu'une table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fruits(id, couleur, type, pomme_diametre, banane_longueur)
    Ainsi la colonne type indique quel est le type de fruit (Pomme | Banane) et la colonne pomme_diametre indique le diametre d'une pomme quant à banane_longueur indique la longueur d'une banane, tandis que la colonne couleur est commune à Pomme et Banane.


    Je ne sais pas si c'est lié à ton problème mais ça risque de faciliter les choses

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2004
    Messages : 15
    Points : 15
    Points
    15
    Par défaut
    Salut,
    Oui, je pense que je devrais faire comme ça (une vrai hierarchie au niveau de mes classses) mais je voulais les stocker dans des tables differentes (ce que RoR ne sais pour l'instant pas faire nativement). Merci pour ta réponse. J'aurais de toute façon le meme problème pour des tables liées.
    Exemple :
    Rechercher les contrat dont le fournisseur a pour nom "toto"

    De plus quand je lance la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./script/generate scafold fournisseur
    il me retourne une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error  Before updating scaffolding from new DB schema, try creating a table for your model
    (il ne trouve pas ma table fournisseurs, ce qui est normal car elle n'existe pas)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    class Fournisseur < Tier
    # Mes fournisseurs seront stockés dans la table tiers car il dérivent de la classe Tier
    end

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Recherche multi-critères ou un seul
    Par jack1234 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 14/12/2005, 08h56
  2. Recherche multi-critères
    Par PAUL87 dans le forum Access
    Réponses: 66
    Dernier message: 13/12/2005, 12h12
  3. problème SQL avec le tutoriel recherche multi critère
    Par qbihlmaier dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 05/12/2005, 19h33
  4. problème avec résultat de recherche multi-critères
    Par audrey_desgres dans le forum Access
    Réponses: 2
    Dernier message: 23/06/2005, 11h00
  5. Procédure stockée: recherche multi-critères
    Par biroule dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 01/09/2004, 16h02

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