Forum: Rails France self-join exemple

434ba715011106ccd111e30c911584a6?d=identicon&s=25 Anass Leo (leonidas)
on 2010-03-12 13:29
salut !
j'essaye de faire un self join pour une table "User" , j'ai deux
relations pour les entites de cette meme table : has_many et belongs_to
un enfant ( User ) belongs_to un parent ( User ) , un parent has_many
enfants.

voici le bout de code que j'ai :

class User < ActiveRecord::Base

  belongs_to :parent,:class_name => "User"
  has_many :enfant,:class_name => "User" ,:foreign_key => "id"

sur ma console je teste la creation d'un parent , d'un enfant et je
joigner le parent à cet enfant.apres un get de l'enfant je peux
recuperer le parent , mais je peux pas recuperer l'enfant d'un aprent :
j'ai comme User le parent lui meme.

qu'est ce qui marche pas dans mon code ? est ce qu'il y a un example
complet pour ce cas ?

merci
98d4d4be867fc17d3120f683513d3819?d=identicon&s=25 Guillaume Betous (Guest)
on 2010-03-12 13:36
(Received via mailing list)
>   has_many :enfant,:class_name => "User" ,:foreign_key => "id"
>
j'ai pas de Rails sous la main pour tester, mais ca me choque un peu ce
"id" dans le foreign_key. c'est pas "parent_id" qu'il faut mettre ?

gUI
D6fe2abcee256204cc1cb45db47a3c8c?d=identicon&s=25 Martin Catty (Guest)
on 2010-03-12 13:38
(Received via mailing list)
Le 12/03/10 13:29, Anass Leo a écrit :
> salut !

Bonjour,

> class User<  ActiveRecord::Base
>
>    belongs_to :parent,:class_name =>  "User"
>    has_many :enfant,:class_name =>  "User" ,:foreign_key =>  "id"
> qu'est ce qui marche pas dans mon code ? est ce qu'il y a un example
> complet pour ce cas ?

Ta foreign_key doit être le parent_id pour que cela fonctionne.
Par contre avec ta modélisation, un enfant ne peut avoir qu'un seul
enfant, c'est normal ?

--
Martin Catty || fuse
http://www.noremember.org
http://www.synbioz.com
434ba715011106ccd111e30c911584a6?d=identicon&s=25 Anass Leo (leonidas)
on 2010-03-12 16:06
Guillaume Betous wrote:
>>   has_many :enfant,:class_name => "User" ,:foreign_key => "id"
>>
> j'ai pas de Rails sous la main pour tester, mais ca me choque un peu ce
> "id" dans le foreign_key. c'est pas "parent_id" qu'il faut mettre ?
>
> gUI

meci pour ta reponse , mais meme avec ce changement de la foreign_key
j'ai toujours le meme problem càd : d'un enfant je peux recupere le
parent, mais à partir de ce parent j'ai comme enfant le parent lui meme.

je comprend pas encore ce qui cloche.
740cd8c5438370ea1be7c66bb3d20582?d=identicon&s=25 Florent (Guest)
on 2010-03-12 16:55
(Received via mailing list)
Salut,
Personnellement, j'ai utilisé acts_as_tree, et associé au parent_id,
tout a fonctionné du premier coup.
http://api.rubyonrails.org/classes/ActiveRecord/Ac...

En espérant que ça puisse t'aider :)
D6fe2abcee256204cc1cb45db47a3c8c?d=identicon&s=25 Martin Catty (Guest)
on 2010-03-12 17:20
(Received via mailing list)
Le 12/03/10 16:06, Anass Leo a écrit :
> meci pour ta reponse , mais meme avec ce changement de la foreign_key
> j'ai toujours le meme problem càd : d'un enfant je peux recupere le
> parent, mais à partir de ce parent j'ai comme enfant le parent lui meme.
>
> je comprend pas encore ce qui cloche.

As tu rechargé l'application ? Tu as exactement le comportement standard
en laissant id en foreign_key.

--
Martin Catty || fuse
http://www.noremember.org
http://www.synbioz.com
434ba715011106ccd111e30c911584a6?d=identicon&s=25 Anass Leo (leonidas)
on 2010-03-12 17:30
j'ai pas rechargé l'application , j'utilise la console pour mes test
dans ce cas.
j'ai essayé differentes combinaisons mais ça marche pas encore
D6fe2abcee256204cc1cb45db47a3c8c?d=identicon&s=25 Martin Catty (Guest)
on 2010-03-12 17:33
(Received via mailing list)
Le 12/03/10 17:30, Anass Leo a écrit :
> j'ai pas rechargé l'application , j'utilise la console pour mes test
> dans ce cas.

Fais un reload! en console. Si ça ne fonctionne pas, poste ta migration
car il nous manque des informations.

--
Martin Catty || fuse
http://www.noremember.org
http://www.synbioz.com
434ba715011106ccd111e30c911584a6?d=identicon&s=25 Anass Leo (leonidas)
on 2010-03-12 17:40
voici ma migration pour la table Users

class CreateUsers < ActiveRecord::Migration
  def self.up
    create_table :users do |t|
      t.string :nom
      t.string :prenom
      t.date :dateNaissance
      t.string :adress
      t.string :email
      t.string :role
      t.binary :photo

      t.timestamps
    end
  end

bien sure l'id se cree automatiquement "Id"

voici le model :

class User < ActiveRecord::Base

  belongs_to :parent,
         :class_name => "User"
  has_many :etudiant,
             :class_name => "User" ,
             :foreign_key => "parent_id"
9a00ce848763a4472291fcbcefd31a07?d=identicon&s=25 Jean-Baptiste Barth (Guest)
on 2010-03-12 18:42
(Received via mailing list)
Bonjour,

2010/3/12 Anass Leo <list-incoming@andreas-s.net>

> bien sure l'id se cree automatiquement "Id"
>
>
Oui mais la colonne "parent_id" ne se crée pas toute seule, elle ;-) Il
faut
bien un endroit où stocker, pour chacun de tes users, quel est l'id de
son
parent, non ?
--
Jean-Baptiste
434ba715011106ccd111e30c911584a6?d=identicon&s=25 Anass Leo (leonidas)
on 2010-03-12 20:58
oui , c'exactement ce qui manquait , merci pour ton aide
je suis un debutant sur ROR ;-)
mais dans la doc , ils ne precicent pas qu'il faut avoir ces colonnes (
avec du bon sens on comprent que c'est justifié ) , j'ai pensé que ROR
est assez intelligent pour deviner les id :-)

merci encore.
A99870c1391c39da2089649745965bda?d=identicon&s=25 Jean-François Trân (Guest)
on 2010-03-12 22:20
(Received via mailing list)
Le 12 mars 2010 20:58, Anass a écrit :

Hello,

> oui , c'exactement ce qui manquait , merci pour ton aide
> je suis un debutant sur ROR ;-)
> mais dans la doc , ils ne precicent pas qu'il faut avoir ces
> colonnes ( avec du bon sens on comprent que c'est justifié ) ,
> j'ai pensé que ROR est assez intelligent pour deviner les id :-)

Rails ne lit pas encore dans les pensées ni n'écrit encore
les migrations automatiquement pour toi.

C'est une feature prévue pour Rails 5.0.

Autant dire qu'il faudra faire preuve d'un peu de patience.

   -- Jean-François.

--
http://www.twitter.com/underflow_

http://www.rubyfrance.org
This topic is locked and can not be replied to.