Id et object_id

Bonjour,

Arg : nouveauté dans rails 1.2.2
on ne peut plus appeler le champ id d’un objet, il faut utiliser
object_id…
C’est pas top, id renvoie maintenant une référence d’objet.

Guillaume BELLEGUIC
LES ACCORDEURS DE RESEAUX
e-ngoma / Ker data
4, cours Kennedy
35000 Rennes

[email protected]
http://www.e-ngoma.net

tèl : +33 (0)299 33 87 48
fax : +33 (0)299 33 97 31

RCS Rennes 487 799 892


on ne peut plus appeler le champ id d’un objet, il faut utiliser
object_id…

oulah… c’est pas rien comme modif ! j’en déduis que peut-etre on n’est
pas
trop censés manipuler le “objet.id”… faudra que je regarde les endroits
ou je
le manipule, et voir si on peut pas faire autrement

gUI

Le Ven 16 février 2007 09:34, Guillaume B. a écrit :

on ne peut plus appeler le champ id d’un objet, il faut utiliser
object_id…

oulah… c’est pas rien comme modif ! j’en déduis que peut-etre on n’est
pas trop censés manipuler le “objet.id”… faudra que je regarde les
endroits ou je le manipule, et voir si on peut pas faire autrement

Vous avez une référence pour le changement ? Je ne l’ai pas trouvé dans le
changelog d’ActiveRecord.


Éric Daspet
http://eric.daspet.name/

C’est Global à Ruby.

Dans un irb :
irb(main):001:0> “coucou”.id
(irb):1: warning: Object#id will be deprecated; use Object#object_id
=> 23388470
irb(main):002:0> “coucou”.object_id
=> 23384960

Pour récupérer l’id en mémoire d’un objet il faut maintenant utiliser
MonObjet.object_id et plus MonObjet.id.

Mais je ne pense pas que ça change grand chose dans ActiveRecord.
Tu doit toujours pouvoir appeler :

User.find(:first).id
=> 1
User.find(:first).object_id
=> 47580150

On 2/16/07, Eric D. [email protected] wrote:

Vous avez une référence pour le changement ? Je ne l’ai pas trouvé dans le


Mathieu Fosse

http://blog.kawooa.org
http://www.ziki.com/people/pointcom

Selon : http://wiki.rubyonrails.org/rails/pages/FAQ
c’est ce qui devrait se passer, mais j’ai quand même une erreur…

Je regarde, peut etre un problème sur mon installation.

Mathieu FOSSE a écrit :

MonObjet.object_id et plus MonObjet.id.
On 2/16/07, Eric D. [email protected] wrote:

http://lists.rubyonrails.fr/mailman/listinfo/railsfrance

Guillaume BELLEGUIC
LES ACCORDEURS DE RESEAUX
e-ngoma / Ker data
4, cours Kennedy
35000 Rennes

[email protected]
http://www.e-ngoma.net

tèl : +33 (0)299 33 87 48
fax : +33 (0)299 33 97 31

RCS Rennes 487 799 892


Guillaume :

Arg : nouveauté dans rails 1.2.2
on ne peut plus appeler le champ id d’un objet, il faut utiliser
object_id…
C’est pas top, id renvoie maintenant une référence d’objet.

Je suis comme Éric, je suis sceptique. Est-ce que tu n’es
pas en train de te mélanger les pinceaux ?

Object#id est déprécié en faveur de Object#object_id, et
ça fait un moment de cela. Object#id retourne un
identifiant.

AR::B#id retourne la clé primaire d’un enregistrement,
autrement dit si on suit les conventions, la valeur du
champ de la colonne ‘id’ de la table correspondant à ton
modèle.

Il arrive parfois en manipulant les objets sous Rails,
qu’on se mange un object_id alors qu’on s’attendait
à manipuler une clé primaire.

exemple :
shadok = Shadok.find :first
shadok.id # => clé primaire

shadoks = Shadok.find :all
shadoks.id # => object_id car je manipule une collection.

Est-ce que tu peux nous montrer un exemple simple
illustrant le pb auquel tu as été confronté ?

– Jean-François.

Le 16 févr. 07 à 12:06, Eric D. a écrit :

Vous avez une référence pour le changement ? Je ne l’ai pas trouvé
dans le
changelog d’ActiveRecord.

Sans avoir testé je doute très très sérieusement que même DHH se
permette ce genre de changement majeur d’api dans une release mineur.
De plus il n’y a absolument rien eu sur les forums officiels à ce
sujet donc ca m’a tout l’air d’un hoax.

Renaud_______________________________________________
Railsfrance mailing list
[email protected]
http://lists.rubyonrails.fr/mailman/listinfo/railsfrance

guillaume belleguic [email protected] writes:

Bonjour,

Arg : nouveauté dans rails 1.2.2
on ne peut plus appeler le champ id d’un objet, il faut utiliser
object_id…
C’est pas top, id renvoie maintenant une référence d’objet.

Hein ? Dans mon playground créé par rails 1.2.2 installer par gem :

Purchase.new.save
=> true
Purchase.find(1)
=> #<Purchase:0x2ba75917dca8 @attributes={“order_id”=>nil, “id”=>“1”,
“amount”=>nil, “created_at”=>“2007-02-16 09:57:02.418237”}>
Purchase.find(1).id
=> 1

donc chez moi, avec rails 1.2.2 le id est toujours le bon.

Par contre :

nil.id
RuntimeError: Called id for nil, which would mistakenly be 4 – if you
really wanted the id of nil, use object_id
from (irb):7

donc je pense qu’il y a un problème dans ton code, mais le changement
en question n’a pas été fais dans rail 1.2.2, en tout cas chez moi

Autant pour moi :
mea culpea, j’ai en plus corrigé l’erreur hier soir, mais je me suis un
peut enflamme se matin.

Cela se produisait car je travaillais sur un tableau d’objet et non pas
sur un objet.

Je vous présente toute mes excuse, et regarderai a 2 fois avant de crier
au loup
Jean-François Trân a écrit :

ça fait un moment de cela. Object#id retourne un

– Jean-François.

Guillaume BELLEGUIC
LES ACCORDEURS DE RESEAUX
e-ngoma / Ker data
4, cours Kennedy
35000 Rennes

[email protected]
http://www.e-ngoma.net

tèl : +33 (0)299 33 87 48
fax : +33 (0)299 33 97 31

RCS Rennes 487 799 892


Rémi :

Par contre :

nil.id
RuntimeError: Called id for nil, which would mistakenly be 4 – if you
really wanted the id of nil, use object_id
from (irb):7

Normalement nil.id i.e. nil.object_id renvoie 4, c’est normal,
c’est codé en dur dans Ruby. Dans Rails, NilClass#id a été
redéfini pour afficher ce message d’erreur, justement pour
ces histoires d’Object#id versus AR::B#id.

Pour info, les object ids de true et false sont 2 et 0. C’est aussi
hardcodés dans Ruby.

donc je pense qu’il y a un problème dans ton code, mais le
changement en question n’a pas été fais dans rail 1.2.2, en
tout cas chez moi

 -- Jean-François.