Bonjour à tous.
La question me semble assez basique mais je n’ai pas encore trouver de
solution malheureusement.
J’ai une classe Person qui contient des données de clients.
J’ai une classe Category qui contient des noms de catégories
La relation entre les 2 est un habtm.
J’ai codé un truc un peu sale pour vérifier qu’une catégorie n’est pas
ajoutée 2X pour une même persone dans le contrôleur Person.
Mais en fait, je sais que ce n’est pas sa place et qu’il doit être
possible de faire un validates_uniqueness ou un truc custom dans le
modèle mais je ne vois pas comment.
Quelqu’un aurait une piste pour m’aider ?
Grand merci.
What gets us into trouble is not what we don’t know.
It’s what we know for sure that just ain’t so.
– Mark Twain
PGP-fingerprint 8260 2267 9714 07E3 182F C7B0 9581 794B D743 6F61
My public key is available at : http://pgp.mit.edu Key_ID=D7436F61
On Mar 12, 2008, at 5:35 PM, Laurent RICHARD wrote:
La relation entre les 2 est un habtm.
Grand merci.
Tu peux définir la fonction validate dans tes modèle, qui sera appelée
à chaque sauvegarde. Pour lever une erreur, utilise alors Errors.add
Le mercredi 12 mars 2008 à 18:07 +0100, Fabien JAKIMOWICZ a écrit :
Tu peux définir la fonction validate dans tes modèle, qui sera appelée
à chaque sauvegarde. Pour lever une erreur, utilise alors Errors.add
Tu veux dire avec un genre boucle qui vérifie que pour chaque
categorie.id n’apparait pas dans les suivants ?
What gets us into trouble is not what we don’t know.
It’s what we know for sure that just ain’t so.
– Mark Twain
PGP-fingerprint 8260 2267 9714 07E3 182F C7B0 9581 794B D743 6F61
My public key is available at : http://pgp.mit.edu Key_ID=D7436F61
2008/3/12 Fabien J. [email protected]:
Désolé, je pensais que le problème se situait sur l’emplacement du
code de validation.
Pour ton cas (éviter les doublons), tu devrais juste te contenter de
faire un find avec des conditions et des inclusions pour vérifier la
présence / abscence de la ligne. Sinon tu peux aussi le faire en ruby
(moins performant selon les cas) en utilisant directement la relation
habtm.
je viens de me rendre compte que j’ai surement mal compris. Tu
souhaites te éviter qu’une catégorie ne soit utilisable que par une
personne a la fois ? Dans ce cas, pourquoi le habtm ?
–
Fabien J.
2008/3/12 Laurent RICHARD [email protected]:
Le mercredi 12 mars 2008 à 18:07 +0100, Fabien JAKIMOWICZ a écrit :
Tu peux définir la fonction validate dans tes modèle, qui sera appelée
à chaque sauvegarde. Pour lever une erreur, utilise alors Errors.add
Tu veux dire avec un genre boucle qui vérifie que pour chaque
categorie.id n’apparait pas dans les suivants ?
Désolé, je pensais que le problème se situait sur l’emplacement du
code de validation.
Pour ton cas (éviter les doublons), tu devrais juste te contenter de
faire un find avec des conditions et des inclusions pour vérifier la
présence / abscence de la ligne. Sinon tu peux aussi le faire en ruby
(moins performant selon les cas) en utilisant directement la relation
habtm.
–
Fabien J.
Le mercredi 12 mars 2008 à 20:20 +0100, Laurent RICHARD a écrit :
Tu veux dire avec un genre boucle qui vérifie que pour chaque
Je viens de penser au :unique dans le modèle mais je n’ai pas encore
testé.
J’ai coupé l’herbe sous le pied. J’ai fait un
execute “ALTER TABLE categories_organisms ADD CONSTRAINT UNIQUE
(organism_id, category_id);”
dans la table de jointure. Et j’ai catché l’erreur pour le flash.
What gets us into trouble is not what we don’t know.
It’s what we know for sure that just ain’t so.
– Mark Twain
PGP-fingerprint 8260 2267 9714 07E3 182F C7B0 9581 794B D743 6F61
My public key is available at : http://pgp.mit.edu Key_ID=D7436F61
2008/3/12 Laurent RICHARD [email protected]:
présence / abscence de la ligne. Sinon tu peux aussi le faire en ruby
J’ai juste envie d’éviter qu’une même catégories se retrouvent plusieurs
fois dans la liste d’une même personne.
Je viens de penser au :unique dans le modèle mais je n’ai pas encore
testé.
ok, en effet c’est plus simple une fois compris.
Le mot clé uniq devrait te protéger pour la récupération, mais ca peut
etre en dupliqué dans la base.
–
Fabien J.
Le mercredi 12 mars 2008 à 20:07 +0100, Fabien J. a écrit :
categorie.id n’apparait pas dans les suivants ?
je viens de me rendre compte que j’ai surement mal compris. Tu
souhaites te éviter qu’une catégorie ne soit utilisable que par une
personne a la fois ? Dans ce cas, pourquoi le habtm ?
En fait, pour résumé, toutes les personnes peuvent utiliser toutes les
catégories.
J’ai juste envie d’éviter qu’une même catégories se retrouvent plusieurs
fois dans la liste d’une même personne.
Je viens de penser au :unique dans le modèle mais je n’ai pas encore
testé.–
Laurent RICHARD
[email protected]
What gets us into trouble is not what we don’t know.
It’s what we know for sure that just ain’t so.
– Mark Twain
PGP-fingerprint 8260 2267 9714 07E3 182F C7B0 9581 794B D743 6F61
My public key is available at : http://pgp.mit.edu Key_ID=D7436F61