J'utilise les migrations Rails pour gérer un schéma de base de données, et je crée une table simple dans laquelle je voudrais utiliser une valeur non entière comme clé primaire (en particulier, une chaîne). Pour résumer mon problème, disons qu'il existe un tableau employees
où les employés sont identifiés par une chaîne alphanumérique, par exemple "134SNW"
.
J'ai essayé de créer la table dans une migration comme celle-ci:
create_table :employees, {:primary_key => :emp_id} do |t|
t.string :emp_id
t.string :first_name
t.string :last_name
end
Ce que cela me donne, c'est ce qui semble avoir complètement ignoré la ligne t.string :emp_id
et est allé de l'avant et en a fait une colonne entière. Existe-t-il un autre moyen pour que les rails génèrent la contrainte PRIMARY_KEY (j'utilise PostgreSQL) pour moi, sans avoir à écrire le SQL dans un execute
appel?
REMARQUE : Je sais qu'il n'est pas préférable d'utiliser des colonnes de chaînes comme clés primaires, donc s'il vous plaît pas de réponses disant simplement d'ajouter une clé primaire entière. Je peux quand même en ajouter un, mais cette question est toujours d'actualité.