Une autre voie que tu peux songer à explorer c’est peut-être la
sérialisation d’objets en base de données dans un champs texte ou
binaire.
L’idée ce serait par exemple de faire que tes modules de comportements
incluent un module commun (appellons-le Behaviour pour faire original)
qui
ait une méthode “extend” qui crée le cas échéant un tableau interne
@module
dans l’instance qu’il étend, et ajoute le nom du module étendu dans ce
tableau. Quand tu sauvegarde ton objet tu sérialise ton tableau, et
quand tu
régénère ton objet tu ré-étend les modules dont le nom est dans le
tableau.
Mais ça garde quand même l’inconvénient d’être très compliqué, de
demander
de maîtriser vraiment bien le framework rails pour que tes modules se
sauvegardent et se régénèrent automagiquement, et aussi d’aller très
près
des limites de Ruby (parce que je ne crois pas que l’on puisse retirer
un
module une fois attribué, mais je peux me tromper sur ce point).