You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行rails db:migrate报错NameError: uninitialized constant Cheeses求助

解决rails db:migrate报错uninitialized constant Cheeses的问题

嘿,这个报错一看就是Rails那套严格的命名规范在“找茬”!咱们来一步步搞定它:

问题根源:文件名与Rails自动加载规则不匹配

Rails的自动加载机制对文件名的大小写和命名格式有严格要求,你的问题主要出在模型文件名上:
你当前的模型文件是straight_curdin/app/models/Cheese.rb,但Rails要求模型文件必须是小写开头的蛇形单数命名,正确的文件名应该是cheese.rb(首字母必须小写)。

额外检查:模型类的完整定义

你给出的模型代码只写了class Cheese < Application...,确保模型类完整定义是这样的:

class Cheese < ApplicationRecord
end

必须完整继承ApplicationRecord(这是Rails 5及以上版本的标准模型父类),不能只写一半哦。

迁移文件是没问题的!

你的迁移文件20180423222002_cheeses.rb完全符合规范:

  • 迁移类名CreateCheeses遵循Create+复数模型名的规则
  • 创建的表cheeses是模型名Cheese的复数形式,这完全符合Rails的表命名约定

修复步骤

  1. 重命名模型文件:把straight_curdin/app/models/Cheese.rb改成straight_curdin/app/models/cheese.rb
  2. 补全模型类的代码,确保它正确继承ApplicationRecord
  3. 重新运行命令:rails db:migrate

这样应该就能顺利执行迁移啦!

内容的提问来源于stack exchange,提问作者Tsardines

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:14:18