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 :

warning dans les tests


Sujet :

Ruby on Rails

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 31
    Points : 25
    Points
    25
    Par défaut warning dans les tests
    Bonjour à tous,

    J'ai un petit problème, en fait c'est un warning que je voudrais bien l'éliminer, il s'affiche lorsque je lance mes tests:

    ../app/models/channel.rb:96: warning: Object#id will be deprecated; use Object#object_id

    la ligne 96 contient:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p[:users] = p[:user].id.to_a if p[:user]
    Qui a une idée?

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    Citation Envoyé par anis50 Voir le message
    ../app/models/channel.rb:96: warning: Object#id will be deprecated; use Object#object_id
    Le message me semble plutôt clair pourtant

    tu remplaces id par object_id, et hop !
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 31
    Points : 25
    Points
    25
    Par défaut
    Merci pour la reponse,

    Je ne sais pas si ca va impacter le code. Je vérifie .


    Encore merci...

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Citation Envoyé par titoumimi
    tu remplaces id par object_id, et hop !
    Hum, je suis pas sur que ça soit si simple

    Dans ton modèle, par id tu entends probablement l'id de l'enregistrement dans ta table.
    Les objets ActiveRecord ont effectivement cette méthode id qui retourne cette valeur.

    Le problème est que tout les objets Ruby ont aussi une méthode id dépréciée (renommée en object_id), qui retourne "un entier unique pour cet objet" (un pointeur en quelque sorte).

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    #Pour un objet classique (exemple une string), la méthode object_id donne :
    >> chaine = "bonjour"
    => "bonjour"
    >> chaine.id
    (irb):9: warning: Object#id will be deprecated; use Object#object_id
    => 9809870
    >> chaine.object_id
    => 9809870
     
    >> autre_chaine = "bonjour"
    => "bonjour"
    >> autre_chaine.object_id
    => 9703550 # Retourne une object_id différent, même si les deux chaînes ont la même valeur, car ce sont des instances différentes
     
     
    # Pour un objet ActiveRecord : la méthode "id" existe (est n'est pas du tout depréciée, mais ce n'est pas la même que celle des autres objets Ruby)
    >> user = User.find(:first)
    => #<User id: 1 ...>
    >> user.id
    => 1
    >> user.object_id
    => 9659510
    Moralité :
    - Tu n'auras probablement jamais besoin d'utiliser object_id
    - Tu attendais sûrement un objet ActiveRecord dans p[:user], mais ce n'est pas le cas (d'où ton warning)
    Toute la documentation Ruby on Rails : gotapi.com/rubyrails
    Mes articles :
    > HAML : langage de template pour Ruby on Rails

  5. #5
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    Citation Envoyé par Taum Voir le message
    Hum, je suis pas sur que ça soit si simple
    En me basant sur ce que j'avait, à savoir un "Object", c'était bon
    Mais efefctivement, ta réponse est nettement plus complète que la mienne
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

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

Discussions similaires

  1. [JUnit] Ajouter des dépendences dans les tests ?
    Par Djobird dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 17/07/2009, 23h34
  2. Calcul de la profondeur dans les tests unitaires
    Par alex.nd4 dans le forum Tests et Performance
    Réponses: 0
    Dernier message: 26/02/2009, 16h08
  3. Réponses: 1
    Dernier message: 24/01/2008, 14h21
  4. Warning dans les tests
    Par anis50 dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 23/10/2007, 15h04
  5. [Mingw] Corriger les warning dans les fichiers d'en-tête
    Par gege2061 dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 12/06/2007, 14h00

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