ActiveRecord fonctionne sur le principe que chaque table possède une seule colonne de clé primaire qui n'a aucune importance dans le domaine d'application. C'est (en partie) pourquoi vous n'avez pas à définir la colonne id
dans vos migrations create_table
. Le nom de la colonne (et le type) peuvent être modifiés, en grande partie pour prendre en charge les schémas hérités, et les clés primaires à plusieurs colonnes sont difficiles à implémenter du tout. Au moment où vous commencez à attribuer une signification de domaine à l'identifiant, vous commencez à rompre la convention et je vous conseille vivement de créer un autre champ/propriété/variable-membre/colonne/what-have -vous de détenir cette information. Laissez l'identifiant à une clé. Dans le cas d'utilisation que vous décrivez, il n'y a aucune raison pour que votre contrôleur n'identifie pas le cas particulier où params[:id] == '0'
et le traite de manière appropriée, en basculant vers la "partie de projet", que vous identifiez d'une autre manière que par . Puisque vous voulez probablement que chaque projet commence à partir de 0, je suppose que vous ajouteriez quelque chose comme seq
et l'utiliserais au lieu de id
dans vos routes, de cette façon vos clés params ont plus de sens. Conservez la valeur seq
la plus élevée du projet, afin de connaître le numéro à attribuer lors de la création d'une nouvelle pièce. Les suppressions et les insertions (en supposant que la séquence compte) sont entièrement à vous ...
Merci. Je vais essayer. –