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 :

Récupération de données Activerecord


Sujet :

Ruby on Rails

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2014
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Récupération de données Activerecord
    Bonsoir,

    Voila je débute sur rails et j'ai un petit soucis de récupération/lecture de données récupérer via cette requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     character = Character.includes(:avatars).where(:user_id => session)
    cela m'execute 2 requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Character Load (0.5ms)  SELECT `characters`.* FROM `characters` WHERE `characters`.`user_id` = 10
      Avatar Load (0.4ms)  SELECT `avatars`.* FROM `avatars` WHERE `avatars`.`character_id` IN (19)
    j'ai aussi essayer de cette façon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        Character.includes(:avatars).joins(:avatars).where(:user_id => session)
    ce qui me m'exécute ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     SELECT `characters`.`id` AS t0_r0, `characters`.`user_id` AS t0_r1, `characters`.`pv` AS t0_r2, `characters`.`strength` AS t0_r3, `characters`.`exp` AS t0_r4, `characters`.`name` AS t0_r5, `characters`.`created_at` AS t0_r6, `characters`.`updated_at` AS t0_r7, `avatars`.`id` AS t1_r0, `avatars`.`character_id` AS t1_r1, `avatars`.`path` AS t1_r2, `avatars`.`created_at` AS t1_r3, `avatars`.`updated_at` AS t1_r4 FROM `characters` INNER JOIN `avatars` ON `avatars`.`character_id` = `characters`.`id` WHERE `characters`.`user_id` = 10

    Le problème c'est que dans ma vue quand j'exécute un each de cette façon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     <% @character.each do |char|%>
            <%= char.name %>
            <%= char.id %>
            <%= char.avatar.path %>
      <%end%>

    Je ne peux pas accéder au dernier. char.avatar est nil alors que les donnée sont sensée être bien récupérer. Si j'exécute les commande en les copiant collant dans phpmyadmin je récupère ce que je veux. Ma question est donc : Comment faire pour lire les donnée appartenant a la table avatar. Merci d'avance

  2. #2
    Membre averti Avatar de Javix
    Inscrit en
    Juin 2007
    Messages
    531
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 531
    Points : 353
    Points
    353
    Par défaut
    C'est inutile d'utiliser 'joins' et 'includes' en même temps, - c'est soit l'un soit l'autre. La différence est que avec includes tu diminue le nombre de requêtes exécutées et garde toutes les données en mémoire.
    Comment sont liés tes AR modèles (Character et Avatar) ? Si Character a Avatars, alors tu devrait plutôt écrire comme tu l'a fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    character = Character.includes(:avatars).where(:user_id => session)
    Mais dans ta vu (view) avatars doit être en pluriel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <%= char.avatars.first.path %> # tu récupère un Array d'Avatars, juste pour cet exemple tu prends le premier, sinon il faudra rajouter encore une boucle.

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/04/2004, 10h09
  2. Réponses: 2
    Dernier message: 20/02/2004, 08h47
  3. [ DB2] => [ORACLE] Récupération de données
    Par LeDid dans le forum DB2
    Réponses: 3
    Dernier message: 25/06/2003, 17h10
  4. Réponses: 13
    Dernier message: 20/03/2003, 08h11
  5. [XMLRAD] récupération de donnée
    Par Mitch79 dans le forum XMLRAD
    Réponses: 7
    Dernier message: 30/01/2003, 15h36

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