执行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的表命名约定
修复步骤
- 重命名模型文件:把
straight_curdin/app/models/Cheese.rb改成straight_curdin/app/models/cheese.rb - 补全模型类的代码,确保它正确继承
ApplicationRecord - 重新运行命令:
rails db:migrate
这样应该就能顺利执行迁移啦!
内容的提问来源于stack exchange,提问作者Tsardines
相关产品推荐
相关产品推荐

