Le problème c’est que voila, je cherche en gros à faire un scaffold
Friend player:references player:references, mais comme vous vous doutez,
ça ne fonctionne pas.
J’ai un petit problème : j’ai une table de players. chaque players peut
avoir un ou plusieurs amis. J’ai donc tout naturellement pensé à faire
une table friends en relation, table avec 2 colonnes de FK id_players si
vous voyez ce que je veux dire.
Le problème c’est que voila, je cherche en gros à faire un scaffold
Friend player:references player:references, mais comme vous vous doutez,
ça ne fonctionne pas.
Que dois-je faire ? Ma modélisation est-elle foireuse ?
avec un “join model” :
class Friendship < AR::B
belongs_to :player # fk player_id
belongs_to :player2, :foreign_key => ‘player2_id’, :class_name =>
‘Player’
end
class Player < AR::B
has_many :friendships
has_many :friends, :through => :friendships
end
donc ça c’est pour le départ, après tu affines, ça dépend si A
est ami avec B, ça ne signifie pas forcément que B considère
A comme son ami, etc.
Le 16 d�cembre 2008 00:32, Sylvain P. a �crit :
J’ai un petit probl�me : j’ai une table de players. chaque players peut
avoir un ou plusieurs amis. J’ai donc tout naturellement pens� � faire
une table friends en relation, table avec 2 colonnes de FK id_players si
vous voyez ce que je veux dire.
Le probl�me c’est que voila, je cherche en gros � faire un scaffold
Friend player:references player:references, mais comme vous vous doutez,
�a ne fonctionne pas.
Que dois-je faire ? Ma mod�lisation est-elle foireuse ?
avec un “join model” :
class Friendship < AR::B
belongs_to :player # fk player_id
belongs_to :player2, :foreign_key => ‘player2_id’, :class_name =>
‘Player’
end
class Player < AR::B
has_many :friendships
has_many :friends, :through => :friendships
end
donc �a c’est pour le d�part, apr�s tu affines, �a d�pend si A
est ami avec B, �a ne signifie pas forc�ment que B consid�re
A comme son ami, etc.
Ok, merci. Pour le fait que A considère que B est son ami et
inversement, j’ai un booléen en plus qui permet de valider ou non la
relation. Bon, je viens de tester, ça fonctionne parfaitement merci
bien.
Attention sur un point, je vais faire une analogie avec Twitter.
Si A est ami avec B, c’est comme si A suit B. Or sous Twitter,
A suit B,ça ne veut pas autant dire que B suit A (relation
asymétrique) et donc followers de A != followings de A
a.friends c’est comme si tu faisais a.followings, tu as
tout ceux que A suit. Donc si tu considères que la
relation est symétrique, il va te manquer a.followers - a.followings
ce qui dans un sens, veut dire que a.friends = a.followers |
a.followings
donc tout dépend si tu considères A(id 1) est ami avec B(id 2)
crée un tuple dans la table friendships (1,2) ou doit en créer
deux : (1,2) (2,1)
Dans le premier cas, tu risques de confondre friends et followings.