Type enum, performance et maintenabilité - Ruby/Rails - Programmation
Marsh Posté le 30-05-2008 à 11:17:50
LeRiton a écrit : Bonjour, |
Peut-être avec des entiers et des constantes de classe du modèle
class Utilisateur << ActiveRecord::Base
Utilisateur::Homme = 0
Utilisateur::Femme = 1
end
Utilisateur.find_all_by_sexe(Utilisateur::Homme)
Comme ça, tu peux utiliser des booleens, ou des entiers de manière assez lisible ...
En plus, ça garde l'aspect triable des enums
J'ai jamais testé, mais ça devrait marcher, non ?
Marsh Posté le 02-06-2008 à 10:19:37
Salut à toi,
C'est ce que j'entendais par "L'autre solution serait d'appliquer un entier aux champs en question, avec une table d'association entier / intitulé en annexe.", bien que ce que tu me propose est de n'avoir d'"association" que dans le modèle.
Ce qui me dérange là dedans, c'est que la base et les migrations ne sont pas très "lisibles". Pas grave me diras-tu tant que le code l'est, mais c'est en ce sens que je venais prendre quelques avis.
On peut pas dire que le sujet déchaine les foules...
Marsh Posté le 02-06-2008 à 10:27:13
LeRiton a écrit : Salut à toi, |
En quoi les migrations perdent en lisibilité ?
Pour la lisibilité de la BDD, c'est sur, mais ça ne change pas beaucoup par rapport à une clé étrangère ...
LeRiton a écrit : |
C'est parce que Rails n'est utilisé que par l'élite
Marsh Posté le 02-06-2008 à 10:40:46
Paulp a écrit : En quoi les migrations perdent en lisibilité ? |
Simplement que l'association intitulé / entier n'y apparaitra pas, donc on se saura pas à quoi correspondront les valeurs de
Code :
|
Ce qui est le but de l'enum.
Paulp a écrit : C'est parce que Rails n'est utilisé que par l'élite |
L'auteur du topic ne saurait être tenu responsable, toussa...
Marsh Posté le 02-06-2008 à 18:23:47
LeRiton a écrit :
|
Ah ouais, effectivement
Marsh Posté le 28-05-2008 à 15:55:30
Bonjour,
Dans l'appli que je développe, un certain nombre de champs en base correspond à un type enum. Je tape sur une base Postgres en version 8.3 (qui gère donc le type). La situation ne devrait à priori pas changer à ce niveau, et si c'est le cas, MySQL serait certainement l'alternative, donc considérons que la base en question gère les enums.
J'ai tout d'abord regardé de ce côté. Beaucoup de code pour palier à un manque du langage, mais je crains surtout de gros problèmes de perfs.
L'autre solution serait d'appliquer un entier aux champs en question, avec une table d'association entier / intitulé en annexe. Pas génial en terme de maintenabilité.
Le plugin enum-column règle la question pour MySQL, mais je n'ai pas trouvé l'info concernant une éventuelle compatibilité avec Postgres depuis la gestion du type par le SGBD. Et quid du gain niveau perfs ?
Des avis sur tout ça ?
En question bonus : un type enum est cohérent pour un simple choix homme / femme (le booléen me déplait, toujours pour la lisibilité de la chose) ?