C'est bizarre mais je ne pense pas que cela soit une résolution raisonnable :)

Pour le moment, le projet avance petit à petit. Je pense que la base de données va commencer à rester assez stable. Après avoir retraduit tout en français vu les petits soucis de Convention over Configuration (c'est pratique mais parfois un peu ennuyeux quand un débutant en Rails souhaite utiliser des noms de classes en français).

J'ai appris aussi les associations polymorphiques (quelques pertes de temps aussi pour jouer correctement avec les relations inter-tables) ainsi que certaines validations pour les adresses par défaut.

Actuellement, je vais me pencher sur la problématique de l'historique des entités (Organism, Person et Function). Je pense que la solution la plus pratique/logique est de créer une nouvelle classe pour mettre une relation "One to Many" entre la "Function" et la "Function_Person" (exemple de nom). En effet. Une "Function" appartient à un "Organism" et peut ou non appartenir à une "Person" (si la "Function" est vacante par exemple). Si on veut maintenir un historique, on pourrait créer une instance de "Function_Person" par personne occupant ou ayant occupé (via un booléen pour dire s'il est toujours actif ou non). Jusque là, cela me parraissait logique. Il faudrait juste modifier les relations inter-tables dans les modèles pour représenter cette nouvelle organisation. Le principal problème est que le client souhaite qu'une personne puisse avoir une fonction qui ne soit liée à aucun "Organism" (genre "Gérant"). Et là, pour le moment, je cale.