Je rencontre un problème étrange avec Rails 4.2.4. Je crée une nouvelle table, qui fait référence à d'autres, comme ceci:La pluralisation incorrecte du nom de la colonne lors de la création de la clé étrangère
t.references :local, index: true, foreign_key: true, null: false
t.references :serie, index: true, foreign_key: true, null: false
quand j'exécute la migration, il y a une erreur lors de la création de la contrainte de clé étrangère:
PG::UndefinedColumn: ERROR: no existe la columna «series_id» referida en la llave foránea
qui est espagnol
PG::UndefinedColumn: ERROR: column «series_id» referenced in foreign key constraint does not exist
signifie qu'il n'y a pas de colonne "id_série" dans la table créée. Bien sûr, il ne devrait pas y avoir de colonne avec ce nom.
Le nom de colonne correct que la génération de FK devrait rechercher est "serie_id", et il existe.
Maintenant, la chose la plus étrange est qu'elle ne manque pas pour: local, par exemple. Il ne cherche pas "locales_id", mais "local_id" qui est correct, et le FK correspondant est créé.
J'ai flexions coutume espagnole, et pluralisations sont correctes:
local -> locales
serie -> series
mais je ne comprends pas pourquoi la génération FK semble pluralisation dans un cas et pas dans l'autre.
J'ai trouvé une solution de travail dans this answer, qui est spécifiquement les clés déclarant étrangères, comme:
add_foreign_key :turnos_registrados, :series, column: :serie_id
mais ce que je voudrais savoir pourquoi est-ce qui se passe.
Merci d'avance.
Merci, BoraMa. Votre réponse est très détaillée et vous avez raison, même les migrations ont fonctionné. Je suis allé plus loin et j'ai trouvé une autre solution, je vais l'ajouter comme réponse. – user2553863