我对 Rails 4.2.4 有一个奇怪的问题。我正在创建一个新表,它引用了其他一些表,如下所示:
t.references :local, index: true, foreign_key: true, null: false
t.references :serie, index: true, foreign_key: true, null: false
当我执行迁移时,创建外键约束时出错:
PG::UndefinedColumn: ERROR: no existe la columna «series_id» referida en la llave foránea
这是西班牙语
PG::UndefinedColumn:错误:外键约束中引用的列«series_id»不存在
表示创建的表中没有“series_id”列。当然,它不应该是任何具有该名称的列。
FK 的生成应该寻找的正确列名是“serie_id”,它确实存在。
现在最奇怪的是它不会因为 :local 失败,例如。它不寻找“locales_id”,而是寻找正确的“local_id”,并创建相应的FK。
我有自定义的西班牙语变形,正确的复数形式是:
本地 -> 语言环境
系列 -> 系列
但是我不明白为什么 FK 一代似乎在一种情况下是多元化的,而不是在另一种情况下。
我在这个答案中找到了一个可行的解决方案,它专门声明了外键,例如:
add_foreign_key :turnos_registrados, :series, column: :serie_id
但我想知道的是为什么会这样。
提前致谢。