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 :

rails 2.38 joins + un join personnalise


Sujet :

Ruby on Rails

  1. #1
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 279
    Points : 164
    Points
    164
    Par défaut rails 2.38 joins + un join personnalise
    Bonjour a tous,

    Je cherche a liee trois tables dont une avec un left join
    Si j'ecris moi meme les jointures alors pas de problemes mais des que j'essaie de le faire plus clean, cela ne marche pas

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    comments.paginate (
    :select=> "*",
    :joins=> [ :moderations, :user] ,
    :include=> :moderated_by,
    ...)
    Un user peut faire plusieurs commentaires.
    Un user a une photo.
    Soit sa photo ou un de ses commentaires peuvent etre reporte en tant que offensive dans la table "moderations"
    un report va etre modere par un admin (d'ou le left join)

    J'ai tente aussi de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    :joins=> [ :moderations, :user] ,
    :joins=> "left joins blablabla",
    ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    :joins=> [ :moderations, :user] ,
    :include=> { :moderations=>:moderated_by}
    Mais la il me dit que moderations est deja appele, et en effet je ne veux pas moderations en left join

    ...

    Si vous pouvez m'aider?

    Par la meme occasion, peut on insere des conditions liees au left join dans la jointure du left join?

    Merci beaucoup d'avance

    San

  2. #2
    Membre averti Avatar de Gregory.M
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 684
    Points : 309
    Points
    309
    Par défaut
    Pour faire ca il faut passer par un named scope, ce sera plus propre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    named_scope :blabla, lambda { 
    joins = "inner join ..."
    joins += " left outer join ...."
    { :joins => joins } }
    Moi je ferai comme ca dans un named_scope et je ferai les jointures en sql direct.

  3. #3
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 279
    Points : 164
    Points
    164
    Par défaut
    Merci beaucoup!
    J'ai en effet sorti ma requete en named_scope.

    J'ai aussi garde mes jointures faites a la main.

    Bonne journee

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

Discussions similaires

  1. transformer des ANSI join en join "pas ANSI"
    Par Nico57 dans le forum SQL
    Réponses: 0
    Dernier message: 11/04/2008, 14h20
  2. Jointures INNER JOIN LEFT JOIN
    Par tizla dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 31/05/2007, 13h12
  3. Fonction Left join, Right Join
    Par chandlerbing77 dans le forum Access
    Réponses: 2
    Dernier message: 22/06/2006, 17h36
  4. INNER JOIN , NATURAL JOIN : quelle différence?
    Par cladsam dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/02/2006, 18h05
  5. [ requeste sql ]INNER JOIN / OUTER JOIN
    Par hocinema dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/04/2004, 22h28

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