我在通过rails生成器创建数据库表时遇到问题。
我将一个表名为personal_data并且工作正常。
class CreatePersonalData < ActiveRecord::Migration
def change
create_table :personal_data do |t|
t.string :name
t.string :lastName
t.string :dni
t.string :contact
t.references :user, index: true, foreign_key: true
t.timestamps null: false
end
end
end
但我创建了另一个表,其中引用了个人数据
class CreateMerchants < ActiveRecord::Migration
def change
create_table :merchants do |t|
t.string :storeName
t.references :personal_data, index: true, foreign_key: true
t.references :category, index: true, foreign_key: true
t.string :webPage
t.string :city
t.timestamps null: false
end
end
end
当运行迁移而不是寻找personal_data_id时,迁移会查找personal_datum_id并抛出异常。
PG :: UndefinedColumn:ERROR:no existe la columna«personal_datum_id»referida en lallaveforánea :ALTER TABLE“商家”添加约束“fk_rails_e4239c30dc” FOREIGN KEY(“personal_datum_id”) 参考“personal_data”(“id”)
我将错误翻译成英文
外键约束中引用的列“personal_datum_id”不存在
答案 0 :(得分:1)
我不确定为什么会感到困惑,但也许你可以设置你的变形,以便复数的personal_data是personal_data?
在文件中:config / initializers / inflections.rb
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'personal_data', 'personal_data'
end
答案 1 :(得分:1)
在您的personal_data.rb模型中添加self.table_name = 'personal_data'
并运行迁移